{"id":116262,"date":"2026-10-21T01:56:45","date_gmt":"2026-10-20T17:56:45","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/116262.html"},"modified":"2026-10-21T01:56:45","modified_gmt":"2026-10-20T17:56:45","slug":"%e3%80%90%e9%9b%b6%e5%9f%ba%e7%a1%80%e5%ad%a6%e6%99%ba%e8%83%bd%e4%bb%bf%e7%9c%9f-56%e3%80%91cfd%e7%bd%91%e6%a0%bc%e3%80%81%e8%be%b9%e7%95%8c%e6%9d%a1%e4%bb%b6%e4%b8%8e%e6%97%b6%e9%97%b4%e6%ad%a5","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/116262.html","title":{"rendered":"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65"},"content":{"rendered":"<h2><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"941\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261020175640-6ad7ab58c9875.png\" width=\"1672\" \/><\/h2>\n<h3 style=\"background-color:transparent\">\u8bfe\u7a0b\u6458\u8981<\/h3>\n<p>\u672c\u8282\u627f\u63a5\u5e73\u884c\u677f\u5c42\u6d41\u57fa\u51c6&#xff0c;\u7cfb\u7edf\u8bb2\u89e3CFD\u7f51\u683c\u8d28\u91cf\u3001\u5165\u53e3\u2014\u51fa\u53e3\u4e0e\u58c1\u9762\u8fb9\u754c\u7684\u914d\u5408&#xff0c;\u4ee5\u53ca\u65f6\u95f4\u6b65\u548cCourant\u6570\u7684\u5173\u7cfb\u3002\u901a\u8fc7\u53ef\u8fd0\u884cPython\u7ec3\u4e60&#xff0c;\u89c2\u5bdf\u89e3\u6790\u6d41\u91cf\u7684\u79ef\u5206\u8bef\u5dee&#xff0c;\u5e76\u660e\u786e\u5b83\u4e0e\u771f\u5b9eCFD\u7f51\u683c\u6536\u655b\u7684\u533a\u522b&#xff1b;\u7ed3\u5408\u4e8c\u7ef4\u7f51\u683c\u6a21\u677f\u3001\u8fb9\u754c\u793a\u610f\u56fe\u548c\u7a7a\u95f4\u2014\u65f6\u95f4\u7814\u7a76\u8ba1\u5212&#xff0c;\u5b66\u4e60\u5982\u4f55\u8bb0\u5f55\u3001\u68c0\u67e5\u4e0e\u89e3\u91ca\u79bb\u6563\u8bbe\u7f6e&#xff0c;\u4e3a\u540e\u7eedOpenFOAM\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316\u5960\u5b9a\u57fa\u7840\u3002<\/p>\n<hr \/>\n<h3>\u4e00\u3001\u6709\u4e86\u89e3\u6790\u89e3&#xff0c;\u4e3a\u4ec0\u4e48\u4ecd\u7136\u53ef\u80fd\u7b97\u9519&#xff1f;<\/h3>\n<p>\u4e0a\u4e00\u8282&#xff0c;\u6211\u4eec\u5f97\u5230\u4e86\u5e73\u884c\u677f\u5145\u5206\u53d1\u5c55\u5c42\u6d41\u7684\u89e3\u6790\u901f\u5ea6&#xff1a;<\/p>\n<p>\\\\[ u(y)&#061;\\\\frac{G}{2\\\\mu}y(H-y). \\\\]<\/p>\n<p>\u5b83\u5e94\u8be5\u6ee1\u8db3&#xff1a;<\/p>\n<ul>\n<li>\u4e24\u58c1\u901f\u5ea6\u4e3a\u96f6&#xff1b;<\/li>\n<li>\u4e2d\u95f4\u901f\u5ea6\u6700\u5927&#xff1b;<\/li>\n<li>\u901f\u5ea6\u5256\u9762\u5448\u629b\u7269\u7ebf&#xff1b;<\/li>\n<li>\u6700\u5927\u901f\u5ea6\u662f\u5e73\u5747\u901f\u5ea6\u76841.5\u500d\u3002<\/li>\n<\/ul>\n<p>\u73b0\u5728&#xff0c;\u5047\u8bbe\u67d0\u4f4d\u5b66\u4e60\u8005\u5f97\u5230\u4e86\u4e00\u6761\u63a5\u8fd1\u5747\u5300\u5206\u5e03\u7684\u901f\u5ea6\u66f2\u7ebf\u3002<\/p>\n<p>\u4ed6\u4e0d\u65ad\u52a0\u5bc6\u7f51\u683c&#xff0c;\u7ed3\u679c\u8d8a\u6765\u8d8a\u7a33\u5b9a&#xff0c;\u4e8e\u662f\u5ba3\u5e03&#xff1a;<\/p>\n<p>\u201c\u6a21\u578b\u5df2\u7ecf\u5b9e\u73b0\u7f51\u683c\u65e0\u5173\u3002\u201d<\/p>\n<p>\u8fd9\u4e2a\u7ed3\u8bba\u53ef\u9760\u5417&#xff1f;<\/p>\n<p>\u4e0d\u4e00\u5b9a\u3002\u5982\u679c\u4ed6\u628a\u58c1\u9762\u65e0\u6ed1\u79fb\u8bef\u8bbe\u6210\u4e86\u6ed1\u79fb&#xff0c;\u90a3\u4e48\u4ed6\u53ef\u80fd\u7a33\u5b9a\u5730\u6c42\u89e3\u4e86\u53e6\u4e00\u4e2a\u7269\u7406\u95ee\u9898\u3002<\/p>\n<p>\u56e0\u6b64&#xff0c;\u672c\u8282\u9996\u5148\u5efa\u7acb\u4e00\u4e2a\u5224\u65ad\u987a\u5e8f&#xff1a;<\/p>\n<p>\u7269\u7406\u95ee\u9898\u662f\u5426\u6b63\u786e&#xff1f;<br \/>\n        \u2193<br \/>\n\u8fb9\u754c\u6761\u4ef6\u662f\u5426\u5339\u914d&#xff1f;<br \/>\n        \u2193<br \/>\n\u7f51\u683c\u662f\u5426\u6709\u6548\u4e14\u6709\u8db3\u591f\u5206\u8fa8\u7387&#xff1f;<br \/>\n        \u2193<br \/>\n\u65f6\u95f4\u4e0e\u8fed\u4ee3\u8bbe\u7f6e\u662f\u5426\u5408\u9002&#xff1f;<br \/>\n        \u2193<br \/>\n\u7ed3\u679c\u662f\u5426\u901a\u8fc7\u6838\u67e5&#xff1f; <\/p>\n<p>\u7f51\u683c\u66f4\u5bc6\u3001\u6b8b\u5dee\u66f4\u4f4e\u3001\u66f2\u7ebf\u66f4\u7a33\u5b9a&#xff0c;\u90fd\u9700\u8981\u653e\u5728\u6b63\u786e\u7269\u7406\u5b9a\u4e49\u4e0b\u89e3\u91ca\u3002<\/p>\n<p>\u672c\u8282Python\u7ec3\u4e60\u4e0d\u6c42\u89e3Navier\u2013Stokes\u65b9\u7a0b&#xff0c;\u4e5f\u4e0d\u8fd0\u884cOpenFOAM\u3002\u9644\u5e26\u7684OpenFOAM\u6750\u6599\u4ec5\u7528\u4e8e\u7f51\u683c\u751f\u6210\u4e0e\u68c0\u67e5\u7ec3\u4e60&#xff0c;\u4e0d\u662f\u5b8c\u6574\u6d41\u52a8\u6848\u4f8b\u3002<\/p>\n<h3>\u4e8c\u3001\u5148\u56fa\u5b9a\u7269\u7406\u95ee\u9898&#xff0c;\u518d\u6539\u53d8\u6570\u503c\u8bbe\u7f6e<\/h3>\n<p>\u7ee7\u7eed\u4f7f\u7528\u4e0a\u4e00\u8282\u7684\u57fa\u51c6&#xff1a;<\/p>\n<table>\n<tr>\u9879\u76ee\u8bbe\u7f6e<\/tr>\n<tbody>\n<tr>\n<td>\u677f\u95f4\u8ddd \\\\(H\\\\)<\/td>\n<td>\\\\(0.01\\\\ \\\\mathrm m\\\\)<\/td>\n<\/tr>\n<tr>\n<td>\u957f\u5ea6 \\\\(L\\\\)<\/td>\n<td>\\\\(1\\\\ \\\\mathrm m\\\\)<\/td>\n<\/tr>\n<tr>\n<td>\u5bc6\u5ea6 \\\\(\\\\rho\\\\)<\/td>\n<td>\\\\(1000\\\\ \\\\mathrm{kg\/m^3}\\\\)<\/td>\n<\/tr>\n<tr>\n<td>\u52a8\u529b\u9ecf\u5ea6 \\\\(\\\\mu\\\\)<\/td>\n<td>\\\\(0.001\\\\ \\\\mathrm{Pa\\\\cdot s}\\\\)<\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u52a8\u9ecf\u5ea6 \\\\(\\\\nu\\\\)<\/td>\n<td>\\\\(10^{-6}\\\\ \\\\mathrm{m^2\/s}\\\\)<\/td>\n<\/tr>\n<tr>\n<td>\u538b\u529b\u68af\u5ea6\u5927\u5c0f \\\\(G\\\\)<\/td>\n<td>\\\\(2\\\\ \\\\mathrm{Pa\/m}\\\\)<\/td>\n<\/tr>\n<tr>\n<td>\u58c1\u9762<\/td>\n<td>\u9759\u6b62\u3001\u65e0\u6ed1\u79fb<\/td>\n<\/tr>\n<tr>\n<td>\u5047\u8bbe<\/td>\n<td>\u4e8c\u7ef4\u3001\u7a33\u6001\u3001\u5145\u5206\u53d1\u5c55\u5c42\u6d41\u3001\u65e0\u4f53\u529b<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u53c2\u8003\u7ed3\u679c\u4e3a&#xff1a;<\/p>\n<p>\\\\[ q_{\\\\mathrm{ref}} &#061; \\\\frac{GH^3}{12\\\\mu} &#061; \\\\frac1{6000}\\\\ \\\\mathrm{m^2\/s}, \\\\]\\\\[ \\\\bar u&#061;0.016667\\\\ \\\\mathrm{m\/s}, \\\\qquad u_{\\\\max}&#061;0.025000\\\\ \\\\mathrm{m\/s}. \\\\]<\/p>\n<p>\u8fd9\u91cc\u7684\\\\(q\\\\)\u4ecd\u7136\u662f\u5355\u4f4d\u5c55\u5411\u5bbd\u5ea6\u6d41\u91cf\u3002<\/p>\n<p>\u7814\u7a76\u7f51\u683c\u5f71\u54cd\u65f6&#xff0c;\u4e0d\u8981\u987a\u4fbf\u6539\u53d8\u677f\u95f4\u8ddd\u3001\u9ecf\u5ea6\u3001\u9a71\u52a8\u65b9\u5f0f\u6216\u538b\u529b\u5b9a\u4e49&#xff0c;\u5426\u5219\u6bd4\u8f83\u7684\u5c31\u4e0d\u662f\u540c\u4e00\u4e2a\u95ee\u9898\u3002<\/p>\n<h3>\u4e09\u3001\u7f51\u683c\u8d28\u91cf\u4e0e\u7f51\u683c\u5206\u8fa8\u7387&#xff0c;\u4e0d\u662f\u4e00\u56de\u4e8b<\/h3>\n<p>\u7f51\u683c\u8d28\u91cf\u56de\u7b54&#xff1a;<\/p>\n<p>\u5355\u5143\u662f\u5426\u6709\u6548&#xff0c;\u51e0\u4f55\u5173\u7cfb\u662f\u5426\u9002\u5408\u6240\u7528\u79bb\u6563\u65b9\u6cd5&#xff1f;<\/p>\n<p>\u7f51\u683c\u5206\u8fa8\u7387\u56de\u7b54&#xff1a;<\/p>\n<p>\u7f51\u683c\u662f\u5426\u8db3\u591f\u7ec6&#xff0c;\u80fd\u5426\u63cf\u8ff0\u5173\u6ce8\u7684\u53d8\u5316&#xff1f;<\/p>\n<p>\u4e24\u8005\u9700\u8981\u5206\u522b\u68c0\u67e5\u3002<\/p>\n<table>\n<tr>\u68c0\u67e5\u5185\u5bb9\u4e3b\u8981\u76ee\u7684<\/tr>\n<tbody>\n<tr>\n<td>\u5c3a\u5bf8\u3001\u5305\u56f4\u76d2\u4e0e\u5355\u4f4d<\/td>\n<td>\u9632\u6b62\u628amm\u5f53\u6210m<\/td>\n<\/tr>\n<tr>\n<td>\u8fde\u901a\u6027\u548c\u533a\u57df<\/td>\n<td>\u53d1\u73b0\u610f\u5916\u65ad\u5f00\u6216\u989d\u5916\u533a\u57df<\/td>\n<\/tr>\n<tr>\n<td>\u5355\u5143\u4f53\u79ef<\/td>\n<td>\u6392\u67e5\u65e0\u6548\u3001\u96f6\u6216\u8d1f\u4f53\u79ef<\/td>\n<\/tr>\n<tr>\n<td>\u8fb9\u754c\u540d\u79f0\u4e0e\u7c7b\u578b<\/td>\n<td>\u4fdd\u8bc1\u540e\u7eed\u5b57\u6bb5\u6b63\u786e\u5bf9\u5e94<\/td>\n<\/tr>\n<tr>\n<td>\u975e\u6b63\u4ea4\u6027\u3001\u504f\u659c<\/td>\n<td>\u8bc4\u4ef7\u9762\u901a\u91cf\u8fd1\u4f3c\u7b49\u53ef\u80fd\u53d7\u5230\u7684\u5f71\u54cd<\/td>\n<\/tr>\n<tr>\n<td>\u5c40\u90e8\u5c3a\u5ea6\u4e0e\u8fc7\u6e21<\/td>\n<td>\u5224\u65ad\u8fd1\u58c1\u68af\u5ea6\u7b49\u80fd\u5426\u5408\u7406\u5206\u8fa8<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u975e\u6b63\u4ea4\u6027\u548c\u504f\u659c\u4e0d\u662f\u540c\u4e00\u4e2a\u91cf\u3002\u5355\u5143\u957f\u5bbd\u6bd4\u5927&#xff0c;\u4e5f\u4e0d\u80fd\u8131\u79bb\u6d41\u52a8\u65b9\u5411\u3001\u68af\u5ea6\u548c\u79bb\u6563\u683c\u5f0f&#xff0c;\u76f4\u63a5\u5224\u5b9a\u4e0d\u53ef\u7528\u3002<\/p>\n<p>OpenFOAM\u63d0\u4f9bcheckMesh\u68c0\u67e5\u7f51\u683c\u6709\u6548\u6027&#xff0c;\u5b9e\u9645\u65e5\u5fd7\u5e94\u4e0e\u8f6f\u4ef6\u7248\u672c\u548c\u8bbe\u7f6e\u4e00\u8d77\u4fdd\u5b58\u3002Foundation v13\u7f51\u683c\u5de5\u5177\u8bf4\u660e<\/p>\n<p>\u4f46\u8981\u6ce8\u610f&#xff1a;<\/p>\n<p>checkMesh\u901a\u8fc7&#xff0c;\u4e0d\u7b49\u4e8e\u8fb9\u754c\u6761\u4ef6\u6b63\u786e&#xff0c;\u4e5f\u4e0d\u7b49\u4e8e\u5df2\u7ecf\u8fbe\u5230\u7f51\u683c\u65e0\u5173\u3002<\/p>\n<p>\u672c\u8282\u4e0d\u63d0\u4f9b\u9002\u7528\u4e8e\u6240\u6709\u6a21\u578b\u7684\u7edf\u4e00\u7f51\u683c\u8d28\u91cf\u9608\u503c\u3002<\/p>\n<h3>\u56db\u3001\u5165\u53e3\u548c\u51fa\u53e3\u6761\u4ef6&#xff0c;\u8981\u6210\u7ec4\u7406\u89e3<\/h3>\n<p>\u8981\u5b9e\u73b0\u5e73\u884c\u677f\u5145\u5206\u53d1\u5c55\u6d41\u52a8&#xff0c;\u53ef\u4ee5\u91c7\u7528\u4e0d\u540c\u8def\u5f84&#xff0c;\u4f46\u4e0d\u80fd\u968f\u610f\u6df7\u642d\u3002<\/p>\n<h4>4.1 \u901f\u5ea6\u6216\u6d41\u91cf\u9a71\u52a8<\/h4>\n<p>\u5165\u53e3\u7ed9\u5b9a\u901f\u5ea6\u5256\u9762\u6216\u6d41\u91cf&#xff0c;\u51fa\u53e3\u8bbe\u7f6e\u538b\u529b\u53c2\u8003&#xff0c;\u5176\u4ed6\u53d8\u91cf\u91c7\u7528\u4e0e\u6c42\u89e3\u5668\u76f8\u5bb9\u7684\u6761\u4ef6\u3002<\/p>\n<p>\u5982\u679c\u7ed9\u5b9a\u5747\u5300\u5165\u53e3&#xff0c;\u901a\u5e38\u4f1a\u5b58\u5728\u53d1\u5c55\u6bb5&#xff0c;\u4e0d\u80fd\u8981\u6c42\u6574\u4e2a\u901a\u9053\u7acb\u5373\u6ee1\u8db3\u5145\u5206\u53d1\u5c55\u629b\u7269\u7ebf\u5256\u9762\u3002<\/p>\n<p>\u90e8\u5206\u6559\u7a0b\u91c7\u7528\u5165\u53e3\u538b\u529bzeroGradient\u3001\u51fa\u53e3\u901f\u5ea6zeroGradient\u7b49\u7ec4\u5408&#xff0c;\u4f46\u8fd9\u4e0d\u80fd\u76f4\u63a5\u8bc1\u660e\u6574\u4e2a\u89e3\u6790\u573a\u4e0e\u8be5\u6570\u503c\u6848\u4f8b\u4e25\u683c\u4e00\u81f4&#xff0c;\u4ecd\u9700\u68c0\u67e5\u5165\u53e3\u3001\u51fa\u53e3\u5f71\u54cd\u548c\u6bd4\u8f83\u4f4d\u7f6e\u3002<\/p>\n<h4>4.2 \u538b\u529b\u9a71\u52a8<\/h4>\n<p>\u89c4\u5b9a\u5408\u9002\u7684\u538b\u529b\u9a71\u52a8&#xff0c;\u8ba9\u901f\u5ea6\u901a\u8fc7\u52a8\u91cf\u65b9\u7a0b\u548c\u76f8\u5bb9\u8fb9\u754c\u6761\u4ef6\u6c42\u51fa\u3002<\/p>\n<p>\u4e0d\u8981\u53c8\u4efb\u610f\u6307\u5b9a\u4e00\u4e2a\u72ec\u7acb\u5165\u53e3\u6d41\u91cf&#xff0c;\u8981\u6c42\u4e24\u8005\u540c\u65f6\u6210\u7acb\u3002<\/p>\n<h4>4.3 \u5468\u671f\u9a71\u52a8<\/h4>\n<p>\u6d41\u5411\u4e24\u7aef\u91c7\u7528\u5339\u914d\u7684\u5468\u671f\u8bbe\u7f6e&#xff0c;\u5e76\u901a\u8fc7\u76f8\u5e94\u6e90\u9879\u6216\u5e73\u5747\u6d41\u52a8\u9a71\u52a8\u5b9e\u73b0\u76ee\u6807\u3002<\/p>\n<p>\u4ec5\u4ec5\u5199\u4e0acyclic&#xff0c;\u4e0d\u4f1a\u81ea\u52a8\u4ea7\u751f\u4e0a\u4e00\u8282\u7684&#xff1a;<\/p>\n<p>\\\\[ G&#061;2\\\\ \\\\mathrm{Pa\/m}. \\\\]<\/p>\n<p>\u8fb9\u754c\u662f\u5426\u9002\u5b9a&#xff0c;\u53d6\u51b3\u4e8e\u6574\u7ec4\u8bbe\u7f6e\u3001\u65b9\u7a0b\u548c\u7b97\u6cd5&#xff0c;\u4e0d\u80fd\u7b80\u5355\u6982\u62ec\u4e3a\u201c\u4efb\u4f55\u573a\u5408\u90fd\u4e0d\u8bb8\u540c\u65f6\u6d89\u53ca\u901f\u5ea6\u548c\u538b\u529b\u201d\u3002\u771f\u5b9e\u6848\u4f8b\u5e94\u53c2\u8003\u9501\u5b9a\u7248\u672c\u7684\u5b8c\u6574\u6559\u7a0b\u3002Foundation v13\u8fb9\u754c\u6761\u4ef6\u8bf4\u660e<\/p>\n<h3 style=\"background-color:transparent\">\u4e94\u3001\u4e0a\u4e0b\u58c1\u9762\u4e0e\u4e8c\u7ef4empty\u8fb9\u754c&#xff0c;\u8981\u5206\u6e05\u4f4d\u7f6e<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"828\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261020175642-6ad7ab5acd21c.png\" width=\"2250\" \/><\/p>\n<p>\u56fe\u4e2d\u7684\u4e0a\u4e0b\u8fb9\u754c\u662f\u7269\u7406\u58c1\u9762&#xff0c;\u9759\u6b62\u65e0\u6ed1\u79fb&#xff1a;<\/p>\n<p>\\\\[ \\\\boldsymbol U&#061;\\\\boldsymbol 0. \\\\]<\/p>\n<p>\u5c55\u5411\u7684\u524d\u3001\u540e\u4e24\u9762\u7528\u4e8e\u4e8c\u7ef4\u7ea6\u675f&#xff0c;\u4e0d\u662f\u4e0a\u4e0b\u58c1\u9762\u3002<\/p>\n<p>OpenFOAM\u7f51\u683c\u4ecd\u7136\u5177\u6709\u4e09\u7ef4\u4f53\u79ef\u3002\u5e38\u89c1\u4e8c\u7ef4\u8bbe\u7f6e\u91c7\u7528\u5c55\u5411\u5355\u5c42\u5355\u5143&#xff0c;\u5e76\u5c06\u8be5\u65b9\u5411\u4e24\u9762\u8bbe\u7f6e\u4e3aempty&#xff0c;\u76f8\u5e94\u573a\u6587\u4ef6\u4e5f\u9700\u8981\u5339\u914d\u3002\u4e0d\u80fd\u76f4\u63a5\u628a\u539a\u5ea6\u8bbe\u6210\u96f6&#xff0c;\u5236\u9020\u9000\u5316\u5355\u5143\u3002Foundation v13\u7f51\u683c\u5b9a\u4e49\u8bf4\u660e<\/p>\n<p>\u8fd9\u91cc\u8981\u533a\u5206\u4e09\u4ef6\u4e8b&#xff1a;<\/p>\n<ul>\n<li>\u7f51\u683c\u4e2d\u7684walls\u662f\u8fb9\u754c\u540d\u79f0&#xff1b;<\/li>\n<li>\u7f51\u683c\u7684type wall\u63cf\u8ff0\u8fb9\u754c\u7c7b\u578b&#xff1b;<\/li>\n<li>\u901f\u5ea6\u573a\u4e2d\u7684noSlip\u8868\u8fbe\u672c\u4f8b\u9759\u6b62\u58c1\u9762\u7684\u65e0\u6ed1\u79fb\u6761\u4ef6\u3002<\/li>\n<\/ul>\n<p>\u7ed9\u8fb9\u754c\u8d77\u540d\u53ebwalls&#xff0c;\u4e0d\u4f1a\u81ea\u52a8\u66ff\u4f60\u8865\u9f50\u6240\u6709\u7269\u7406\u6761\u4ef6\u3002<\/p>\n<p>\u4e0b\u9762\u4ec5\u662f0\/U\u4e2d\u7684\u9605\u8bfb\u7247\u6bb5&#xff0c;\u4e0d\u662f\u5b8c\u6574\u6587\u4ef6&#xff0c;\u4e5f\u4e0d\u662f\u7ec8\u7aef\u547d\u4ee4&#xff1a;<\/p>\n<p>walls<br \/>\n{<br \/>\n    type noSlip;<br \/>\n}<\/p>\n<p>frontAndBack<br \/>\n{<br \/>\n    type empty;<br \/>\n} <\/p>\n<p>\u5165\u53e3\u3001\u51fa\u53e3\u3001\u6587\u4ef6\u5934\u90e8\u7b49\u5185\u5bb9\u5c1a\u672a\u5305\u542b\u3002<\/p>\n<p>\u53e6\u5916&#xff0c;zeroGradient\u8868\u793a\u6cd5\u5411\u68af\u5ea6\u4e3a\u96f6&#xff0c;\u4e0d\u8868\u793a\u53d8\u91cf\u503c\u4e3a\u96f6\u3002\u57fa\u672c\u8fb9\u754c\u6761\u4ef6\u5b9a\u4e49<\/p>\n<h3>\u516d\u3001\u9605\u8bfb\u4e00\u4efd\u4e8c\u7ef4\u7f51\u683c\u6a21\u677f<\/h3>\n<p>\u672c\u8282\u6750\u6599\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7f51\u683c\u5de5\u5177\u793a\u4f8b&#xff1a;<\/p>\n<p>mesh_demo\/<br \/>\n    README.md<br \/>\n    system\/<br \/>\n        blockMeshDict<br \/>\n        controlDict <\/p>\n<p>\u53c2\u8003\u683c\u5f0f\u4e3aFoundation v13\u3002\u51e0\u4f55\u5c3a\u5bf8\u4e3a&#xff1a;<\/p>\n<p>\\\\[ 1\\\\ \\\\mathrm m \\\\times 0.01\\\\ \\\\mathrm m \\\\times 0.001\\\\ \\\\mathrm m. \\\\]<\/p>\n<p>\u5206\u5757\u6570\u4e3a&#xff1a;<\/p>\n<p>\\\\[ 1000\\\\times20\\\\times1. \\\\]<\/p>\n<p>\u6838\u5fc3\u5b9a\u4e49\u5982\u4e0b&#xff1a;<\/p>\n<p>hex (0 1 2 3 4 5 6 7) (1000 20 1) simpleGrading (1 1 1) <\/p>\n<p>\u6309\u5b57\u5178\u63a8\u7b97&#xff1a;<\/p>\n<p>\\\\[ N_{\\\\mathrm{cells}} &#061; 1000\\\\times20\\\\times1 &#061; 20000, \\\\]\\\\[ \\\\Delta x&#061;0.001\\\\ \\\\mathrm m, \\\\qquad \\\\Delta y&#061;0.0005\\\\ \\\\mathrm m. \\\\]<\/p>\n<p>\u8fd9\u4e9b\u662f\u8bbe\u8ba1\u63a8\u7b97&#xff0c;\u4e0d\u662f\u5df2\u7ecf\u6267\u884c\u7684OpenFOAM\u65e5\u5fd7\u3002<\/p>\n<p>\u5982\u679c\u5df2\u7ecf\u6709\u76f8\u5e94OpenFOAM\u7684Linux\u6216WSL\u73af\u5883&#xff0c;\u53ef\u4ee5\u5148\u590d\u5236\u6a21\u677f\u5230\u81ea\u5df1\u7684\u65b0\u76ee\u5f55&#xff0c;\u518d\u5728\u8be5\u76ee\u5f55\u6267\u884c&#xff1a;<\/p>\n<p>blockMesh<br \/>\ncheckMesh <\/p>\n<p>\u6267\u884c\u540e\u5e94\u6838\u67e5\u5b9e\u9645\u5355\u5143\u6570\u3001\u8fb9\u754c\u3001\u7ef4\u6570\u3001\u4f53\u79ef\u548c\u8d28\u91cf&#xff0c;\u5e76\u4fdd\u5b58\u771f\u5b9e\u65e5\u5fd7\u3002\u672c\u6750\u6599\u6ca1\u6709\u6267\u884c\u8fd9\u4e24\u6761\u547d\u4ee4&#xff0c;\u56e0\u6b64\u4e0d\u63d0\u4f9b\u4f2a\u9020\u7684\u6210\u529f\u8f93\u51fa\u3002<\/p>\n<p>\u8be5\u76ee\u5f55\u6ca1\u6709\u5b8c\u6574\u7684\u901f\u5ea6\u3001\u538b\u529b\u3001\u7269\u6027\u548c\u6570\u503c\u914d\u7f6e&#xff0c;\u4e0d\u80fd\u76f4\u63a5\u542f\u52a8\u6d41\u52a8\u6c42\u89e3\u3002\u6a21\u677f\u4e2dcontrolDict\u7684deltaT&#061;1\u4ec5\u4f9b\u7f51\u683c\u5de5\u5177\u6570\u636e\u5e93\u521d\u59cb\u5316&#xff0c;\u4e0d\u662f\u63a8\u8350\u7684CFD\u65f6\u95f4\u6b65\u3002<\/p>\n<h4>\u6bd4\u8f83\u6d41\u91cf\u65f6&#xff0c;\u8fd8\u8981\u8003\u8651\u8ba1\u7b97\u539a\u5ea6<\/h4>\n<p>\u672c\u6a21\u677f\u7684\u5c55\u5411\u539a\u5ea6\u4e3a&#xff1a;<\/p>\n<p>\\\\[ T&#061;0.001\\\\ \\\\mathrm m. \\\\]<\/p>\n<p>\u5982\u679c\u540e\u5904\u7406\u8f93\u51fa\u6574\u4e2a\u8ba1\u7b97\u51fa\u53e3\u7684\u4f53\u79ef\u6d41\u91cf&#xff0c;\u5219\u53c2\u8003\u503c\u5e94\u4e3a&#xff1a;<\/p>\n<p>\\\\[ Q_{\\\\mathrm{ref}} &#061; q_{\\\\mathrm{ref}}T \\\\approx 1.666667\\\\times10^{-7}\\\\ \\\\mathrm{m^3\/s}. \\\\]<\/p>\n<p>\u8981\u4e0e\u5355\u4f4d\u5bbd\u5ea6\u6d41\u91cf\u6bd4\u8f83&#xff0c;\u5e94\u518d\u9664\u4ee5\\\\(T\\\\)\u3002<\/p>\n<p>\u4e0d\u80fd\u628a\\\\(\\\\mathrm{m^3\/s}\\\\)\u76f4\u63a5\u4e0e\u4e0a\u4e00\u8282\u7684\\\\(\\\\mathrm{m^2\/s}\\\\)\u6570\u503c\u6bd4\u8f83&#xff0c;\u4e5f\u4e0d\u80fd\u6df7\u5165\u8d28\u91cf\u6d41\u91cf\\\\(\\\\mathrm{kg\/s}\\\\)\u3002<\/p>\n<h3>\u4e03\u3001\u5148\u505a\u4e00\u4e2a\u53ef\u4ee5\u624b\u7b97\u7684\u79ef\u5206\u8bef\u5dee\u5b9e\u9a8c<\/h3>\n<p>\u628a\u4e0a\u4e00\u8282\u89e3\u6790\u901f\u5ea6\u5256\u9762\u5206\u6210\\\\(N\\\\)\u4e2a\u533a\u95f4&#xff1a;<\/p>\n<p>\\\\[ \\\\Delta y&#061;\\\\frac HN. \\\\]<\/p>\n<p>\u7528\u590d\u5408\u68af\u5f62\u516c\u5f0f\u8ba1\u7b97\u5355\u4f4d\u5bbd\u5ea6\u6d41\u91cf&#xff1a;<\/p>\n<p>\\\\[ q_N &#061; \\\\sum_{i&#061;0}^{N-1} \\\\frac{u_i&#043;u_{i&#043;1}}2\\\\,\\\\Delta y. \\\\]<\/p>\n<p>\u5b9a\u4e49\u76f8\u5bf9\u8bef\u5dee&#xff1a;<\/p>\n<p>\\\\[ e_q &#061; \\\\left| \\\\frac{q_N}{q_{\\\\mathrm{ref}}}-1 \\\\right|. \\\\]<\/p>\n<p>\u8ba1\u7b97\u7ed3\u679c\u4e3a&#xff1a;<\/p>\n<table>\n<tr>\u5206\u6bb5\u6570 \\\\(N\\\\)\\\\(\\\\Delta y\\\\)\/m\u79ef\u5206\u76f8\u5bf9\u8bef\u5dee<\/tr>\n<tbody>\n<tr>\n<td>10<\/td>\n<td>0.001<\/td>\n<td>1.000000%<\/td>\n<\/tr>\n<tr>\n<td>20<\/td>\n<td>0.0005<\/td>\n<td>0.250000%<\/td>\n<\/tr>\n<tr>\n<td>40<\/td>\n<td>0.00025<\/td>\n<td>0.062500%<\/td>\n<\/tr>\n<tr>\n<td>80<\/td>\n<td>0.000125<\/td>\n<td>0.015625%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5bf9\u8fd9\u6761\u5747\u5300\u91c7\u6837\u7684\u629b\u7269\u7ebf&#xff1a;<\/p>\n<p>\\\\[ e_q&#061;\\\\frac1{N^2}. \\\\]<\/p>\n<p>\u6240\u4ee5&#xff0c;\u5206\u6bb5\u6570\u7ffb\u500d&#xff0c;\u8bef\u5dee\u7ea6\u7f29\u5c0f\u56db\u500d\u3002<\/p>\n<p>\u7531\u5df2\u77e5\u8bef\u5dee\u53ef\u4ee5\u4f30\u8ba1\u89c2\u5bdf\u9636\u6570&#xff1a;<\/p>\n<p>\\\\[ p&#061; \\\\frac{\\\\ln(e_N\/e_{2N})}{\\\\ln2} \\\\approx2. \\\\]<\/p>\n<p>\u4f46\u8fd9\u53ea\u662f\u672c\u79ef\u5206\u7ec3\u4e60\u7684\u89c2\u5bdf\u9636\u6570\u3002<\/p>\n<p>\u6240\u6709\u901f\u5ea6\u503c\u90fd\u6765\u81ea\u89e3\u6790\u516c\u5f0f&#xff0c;\u7a0b\u5e8f\u6ca1\u6709\u5728\u4e0d\u540c\u7f51\u683c\u4e0a\u91cd\u65b0\u6c42\u89e3Navier\u2013Stokes\u65b9\u7a0b\u3002\u56e0\u6b64&#xff1a;<\/p>\n<p>\\\\[ \\\\text{\u89e3\u6790\u51fd\u6570\u79ef\u5206\u8bef\u5dee\u4e0b\u964d} \\\\neq \\\\text{\u771f\u5b9eCFD\u7f51\u683c\u6536\u655b}. \\\\]<\/p>\n<p>\u771f\u5b9eCFD\u8bef\u5dee\u8fd8\u53ef\u80fd\u6765\u81ea\u7a7a\u95f4\u79bb\u6563\u3001\u8fb9\u754c\u3001\u8fed\u4ee3\u3001\u65f6\u95f4\u63a8\u8fdb\u548c\u540e\u5904\u7406&#xff0c;\u4e0d\u80fd\u7528\u8fd9\u5f20\u8868\u8bc1\u660e\u67d0\u4e2aOpenFOAM\u6a21\u578b\u5df2\u7ecf\u4e8c\u9636\u6536\u655b\u3002<\/p>\n<h3>\u516b\u3001\u65f6\u95f4\u6b65&#xff1a;\u4e00\u6b65\u4e4b\u5185&#xff0c;\u6d41\u52a8\u8de8\u8fc7\u591a\u5c11\u5355\u5143&#xff1f;<\/h3>\n<p>\u4e00\u7ef4\u76f4\u89c2\u4f30\u8ba1\u4e3a&#xff1a;<\/p>\n<p>\\\\[ Co\\\\approx\\\\frac{|U|\\\\Delta t}{\\\\Delta x}. \\\\]<\/p>\n<p>\u5b83\u79f0\u4e3aCourant\u6570\u3002<\/p>\n<p>\u5148\u7528\u4e00\u4e2a\u72ec\u7acb\u6559\u5b66\u901f\u5ea6&#xff1a;<\/p>\n<p>\\\\[ U&#061;0.1\\\\ \\\\mathrm{m\/s}. \\\\]<\/p>\n<p>\u8fd9\u4e0d\u662f\u4e0a\u4e00\u8282\u57fa\u51c6\u7684\u6700\u5927\u901f\u5ea6\u3002<\/p>\n<p>\u53d6&#xff1a;<\/p>\n<p>\\\\[ \\\\Delta x&#061;0.001\\\\ \\\\mathrm m, \\\\qquad \\\\Delta t&#061;0.002\\\\ \\\\mathrm s. \\\\]<\/p>\n<p>\u5f97\u5230&#xff1a;<\/p>\n<p>\\\\[ Co &#061; \\\\frac{0.1\\\\times0.002}{0.001} &#061; 0.2. \\\\]<\/p>\n<p>\u5982\u679c\u8bfe\u5802\u6682\u9009\u76ee\u6807&#xff1a;<\/p>\n<p>\\\\[ Co\\\\le0.5, \\\\]<\/p>\n<p>\u5219\u4f30\u7b97&#xff1a;<\/p>\n<p>\\\\[ \\\\Delta t \\\\le \\\\frac{0.5\\\\Delta x}{|U|} &#061; 0.005\\\\ \\\\mathrm s. \\\\]<\/p>\n<p>\u8fd9\u91cc\u76840.5\u53ea\u662f\u793a\u4f8b\u76ee\u6807&#xff0c;\u4e0d\u662f\u6240\u6709\u683c\u5f0f\u548c\u6c42\u89e3\u5668\u7684\u901a\u7528\u7a33\u5b9a\u6761\u4ef6\u3002<\/p>\n<h4>\u7f51\u683c\u52a0\u5bc6\u540e&#xff0c;\u539f\u65f6\u95f4\u6b65\u672a\u5fc5\u8fd8\u5408\u9002<\/h4>\n<table>\n<tr>\u60c5\u51b5\\\\(\\\\Delta x\\\\)\/m\\\\(\\\\Delta t\\\\)\/s\\\\(Co\\\\)\u4f30\u7b97<\/tr>\n<tbody>\n<tr>\n<td>\u539f\u8bbe\u7f6e<\/td>\n<td>0.001<\/td>\n<td>0.002<\/td>\n<td>0.2<\/td>\n<\/tr>\n<tr>\n<td>\u53ea\u628a\u95f4\u8ddd\u51cf\u534a<\/td>\n<td>0.0005<\/td>\n<td>0.002<\/td>\n<td>0.4<\/td>\n<\/tr>\n<tr>\n<td>\u95f4\u8ddd\u4e0e\u65f6\u95f4\u6b65\u5747\u51cf\u534a<\/td>\n<td>0.0005<\/td>\n<td>0.001<\/td>\n<td>0.2<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u7a7a\u95f4\u548c\u65f6\u95f4\u8bbe\u7f6e\u76f8\u4e92\u5f71\u54cd\u3002<\/p>\n<p>\u4f46\u51cf\u5c0f\u65f6\u95f4\u6b65&#xff0c;\u4e0d\u80fd\u4fee\u590d\u9519\u8bef\u58c1\u9762\u6761\u4ef6&#xff0c;\u4e5f\u4e0d\u80fd\u4fee\u590d\u65e0\u6548\u7f51\u683c\u3002<\/p>\n<h3>\u4e5d\u3001\u5b9e\u9645Co\u4e0d\u80fd\u53ea\u9760\u4e00\u4e2a\u5168\u5c40\u901f\u5ea6\u4ee3\u66ff<\/h3>\n<p>\u5bf9\u4e8e\u4f7f\u7528\u4f53\u79ef\u9762\u901a\u91cf\u7684\u5e38\u89c1\u5b9a\u4e49&#xff1a;<\/p>\n<p>\\\\[ Co &#061; \\\\frac{\\\\Delta t}{2V} \\\\sum_f|\\\\phi_f|. \\\\]<\/p>\n<p>\u5176\u4e2d&#xff1a;<\/p>\n<ul>\n<li>\\\\(V\\\\)&#xff1a;\u5355\u5143\u4f53\u79ef&#xff1b;<\/li>\n<li>\\\\(\\\\phi_f\\\\)&#xff1a;\u9762\u4f53\u79ef\u901a\u91cf&#xff1b;<\/li>\n<li>\\\\(f\\\\)&#xff1a;\u5355\u5143\u5404\u4e2a\u9762\u3002<\/li>\n<\/ul>\n<p>\u8fd9\u4e2a\u5b9a\u4e49\u8003\u8651\u5c40\u90e8\u7f51\u683c\u548c\u901a\u91cf&#xff0c;\u6bd4\u5355\u4e2a\\\\(U\\\\Delta t\/\\\\Delta x\\\\)\u5305\u542b\u66f4\u591a\u4fe1\u606f\u3002OpenFOAM Courant\u6570\u8bf4\u660e<\/p>\n<p>\u5b9e\u9645\u8ba1\u7b97\u5e94\u68c0\u67e5\u5c40\u90e8\u548c\u6700\u5927Co&#xff0c;\u4e0d\u80fd\u4ec5\u770b\u5e73\u5747\u901f\u5ea6&#xff0c;\u4e5f\u4e0d\u80fd\u673a\u68b0\u5730\u7528\u4e00\u4e2a\u6700\u5c0f\u8fb9\u957f\u4ee3\u66ff\u5b8c\u6574\u7684\u901a\u91cf\u8ba1\u7b97\u3002<\/p>\n<p>\u8fd8\u8981\u533a\u5206&#xff1a;<\/p>\n<ul>\n<li>\u6570\u503c\u7a33\u5b9a&#xff1b;<\/li>\n<li>\u65f6\u95f4\u8bef\u5dee\u8db3\u591f\u5c0f&#xff1b;<\/li>\n<li>\u975e\u7ebf\u6027\u8fed\u4ee3\u5145\u5206&#xff1b;<\/li>\n<li>\u6700\u7ec8\u7269\u7406\u7ed3\u679c\u6b63\u786e\u3002<\/li>\n<\/ul>\n<p>\u5b83\u4eec\u4e0d\u662f\u540c\u4e00\u4ef6\u4e8b\u3002<\/p>\n<p>\u9690\u5f0f\u683c\u5f0f\u4e5f\u9700\u8981\u65f6\u95f4\u7cbe\u5ea6\u68c0\u67e5&#xff1b;\u7a33\u6001\u8fed\u4ee3\u6b21\u6570\u4e5f\u4e0d\u80fd\u4e00\u6982\u5f53\u6210\u771f\u5b9e\u7269\u7406\u65f6\u95f4\u6b65\u3002<\/p>\n<p>\u56de\u5230\u4e0a\u4e00\u8282&#xff1a;<\/p>\n<p>\\\\[ u_{\\\\max}&#061;0.025\\\\ \\\\mathrm{m\/s}. \\\\]<\/p>\n<p>\u91c7\u7528\u76f8\u540c\u95f4\u8ddd\u548c\u65f6\u95f4\u6b65&#xff0c;\u4e00\u7ef4\u4f30\u7b97\u4e3a&#xff1a;<\/p>\n<p>\\\\[ Co_{\\\\mathrm{estimate}} &#061; \\\\frac{0.025\\\\times0.002}{0.001} &#061; 0.05. \\\\]<\/p>\n<p>\u5728\u8bfe\u5802\u76ee\u68070.5\u4e0b&#xff0c;\u65f6\u95f4\u6b65\u4e0a\u9650\u4f30\u7b97\u4e3a0.02 s\u3002<\/p>\n<p>\u8fd9\u4ecd\u7136\u662f\u4f30\u7b97&#xff0c;\u4e0d\u662f\u67d0\u4e2a\u672a\u6267\u884cOpenFOAM\u6848\u4f8b\u7684\u5b9e\u6d4b\u6700\u5927Co\u3002<\/p>\n<h3>\u5341\u3001\u8fd0\u884c\u5b8c\u6574Python\u7ec3\u4e60<\/h3>\n<p>\u8bf7\u5c06\u4e24\u4e2a\u6587\u4ef6\u653e\u5728\u540c\u4e00\u76ee\u5f55&#xff1a;<\/p>\n<p>lesson56_settings.py&#xff1a;<\/p>\n<p>&#034;&#034;&#034;Analytical-profile quadrature and scalar Courant estimates, not a CFD solver.&#034;&#034;&#034;<br \/>\nimport argparse<br \/>\nimport csv<br \/>\nimport json<br \/>\nimport math<br \/>\nfrom pathlib import Path<\/p>\n<p>from lesson55_channel import channel_profile<\/p>\n<p>def quadrature_study():<br \/>\n    rows &#061; []<br \/>\n    for n in (10, 20, 40, 80):<br \/>\n        summary, profile, _ &#061; channel_profile(n&#061;n)<br \/>\n        dy &#061; summary[&#039;parameters&#039;][&#039;H_m&#039;]\/n<br \/>\n        q &#061; math.fsum((a[&#039;u_x_m_per_s&#039;]&#043;b[&#039;u_x_m_per_s&#039;])*dy\/2<br \/>\n                      for a, b in zip(profile[:-1], profile[1:]))<br \/>\n        exact &#061; summary[&#039;q_per_width_m2_per_s&#039;]<br \/>\n        error &#061; abs(q\/exact-1)<br \/>\n        order &#061; math.log(rows[-1][&#039;relative_error&#039;]\/error)\/math.log(2) if rows else None<br \/>\n        rows.append({&#039;N&#039;: n, &#039;dy_m&#039;: dy, &#039;q_trap_m2_per_s&#039;: q,<br \/>\n                     &#039;q_exact_m2_per_s&#039;: exact, &#039;relative_error&#039;: error,<br \/>\n                     &#039;observed_quadrature_order&#039;: order})<br \/>\n    return rows<\/p>\n<p>def courant_estimate(speed, dx, dt, target&#061;.5):<br \/>\n    for name, value in ((&#039;speed&#039;, speed), (&#039;dx&#039;, dx), (&#039;dt&#039;, dt), (&#039;target&#039;, target)):<br \/>\n        if (isinstance(value, bool) or not isinstance(value, (int,float))<br \/>\n                or not math.isfinite(value) or value &lt;&#061; 0):<br \/>\n            raise ValueError(name&#043;&#039; must be a finite positive number&#039;)<br \/>\n    co, limit &#061; speed*dt\/dx, target*dx\/speed<br \/>\n    if not math.isfinite(co) or not math.isfinite(limit) or limit &lt;&#061; 0:<br \/>\n        raise ValueError(&#039;derived Courant values invalid&#039;)<br \/>\n    return {&#039;speed_m_per_s&#039;: speed, &#039;dx_m&#039;: dx, &#039;dt_s&#039;: dt,<br \/>\n            &#039;Co_estimate&#039;: co, &#039;target_Co&#039;: target, &#039;dt_limit_s&#039;: limit}<\/p>\n<p>def self_test():<br \/>\n    rows &#061; quadrature_study()<br \/>\n    assert len(rows) &#061;&#061; 4<br \/>\n    for row in rows:<br \/>\n        assert math.isclose(row[&#039;relative_error&#039;], 1\/row[&#039;N&#039;]**2, rel_tol&#061;1e-9)<br \/>\n        assert math.isclose(row[&#039;q_exact_m2_per_s&#039;], 1\/6000)<br \/>\n    assert all(math.isclose(r[&#039;observed_quadrature_order&#039;],2,abs_tol&#061;1e-9) for r in rows[1:])<br \/>\n    base &#061; courant_estimate(.1,.001,.002)<br \/>\n    assert math.isclose(base[&#039;Co_estimate&#039;],.2) and math.isclose(base[&#039;dt_limit_s&#039;],.005)<br \/>\n    fine &#061; courant_estimate(.1,.0005,.002)<br \/>\n    assert math.isclose(fine[&#039;Co_estimate&#039;],.4)<br \/>\n    assert math.isclose(courant_estimate(.1,.0005,.001)[&#039;Co_estimate&#039;],.2)<br \/>\n    assert math.isclose(courant_estimate(.025,.001,.002)[&#039;Co_estimate&#039;],.05)<br \/>\n    for args in ((0,.001,.002),(.1,0,.002),(.1,.001,float(&#039;nan&#039;))):<br \/>\n        try:<br \/>\n            courant_estimate(*args)<br \/>\n        except ValueError:<br \/>\n            pass<br \/>\n        else:<br \/>\n            raise AssertionError(&#039;invalid input accepted&#039;)<br \/>\n    print(&#039;SELF_TEST_OK&#039;)<\/p>\n<p>def write_csv(path, rows):<br \/>\n    with path.open(&#039;x&#039;,newline&#061;&#039;&#039;,encoding&#061;&#039;utf-8-sig&#039;) as handle:<br \/>\n        writer &#061; csv.DictWriter(handle,fieldnames&#061;list(rows[0]))<br \/>\n        writer.writeheader()<br \/>\n        writer.writerows(rows)<\/p>\n<p>def main():<br \/>\n    parser &#061; argparse.ArgumentParser(description&#061;__doc__)<br \/>\n    parser.add_argument(&#039;&#8211;speed&#039;,type&#061;float,default&#061;.1,help&#061;&#039;positive advection speed, m\/s&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;dx&#039;,type&#061;float,default&#061;.001,help&#061;&#039;streamwise spacing, m&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;dt&#039;,type&#061;float,default&#061;.002,help&#061;&#039;time step, s&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;co-target&#039;,type&#061;float,default&#061;.5,help&#061;&#039;classroom target, not a universal rule&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;out&#039;,type&#061;Path,help&#061;&#039;new output directory only&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;self-test&#039;,action&#061;&#039;store_true&#039;)<br \/>\n    args &#061; parser.parse_args()<br \/>\n    if args.self_test:<br \/>\n        self_test()<br \/>\n        return 0<br \/>\n    try:<br \/>\n        rows &#061; quadrature_study()<br \/>\n        base &#061; courant_estimate(args.speed,args.dx,args.dt,args.co_target)<br \/>\n        cases &#061; [dict(case&#061;&#039;base&#039;,**base),<br \/>\n                 dict(case&#061;&#039;half_dx_same_dt&#039;,**courant_estimate(args.speed,args.dx\/2,args.dt,args.co_target)),<br \/>\n                 dict(case&#061;&#039;half_dx_half_dt&#039;,**courant_estimate(args.speed,args.dx\/2,args.dt\/2,args.co_target))]<br \/>\n        summary &#061; {&#039;mode&#039;:&#039;ANALYTICAL_QUADRATURE_AND_SCALAR_COURANT_ESTIMATE&#039;,<br \/>\n                   &#039;OpenFOAM_run&#039;:False, &#039;quadrature_source&#039;:&#039;lesson55_channel.channel_profile&#039;,<br \/>\n                   &#039;quadrature_is_CFD_mesh_convergence&#039;:False,<br \/>\n                   &#039;courant_base&#039;:base, &#039;max_observed_quadrature_order&#039;:max(r[&#039;observed_quadrature_order&#039;] for r in rows[1:])}<br \/>\n        if args.out:<br \/>\n            args.out.mkdir(parents&#061;True,exist_ok&#061;False)<br \/>\n            write_csv(args.out\/&#039;quadrature.csv&#039;,rows)<br \/>\n            write_csv(args.out\/&#039;courant_cases.csv&#039;,cases)<br \/>\n            (args.out\/&#039;summary.json&#039;).write_text(json.dumps(summary,indent&#061;2,allow_nan&#061;False),encoding&#061;&#039;utf-8&#039;)<br \/>\n        for row in rows:<br \/>\n            print(f&#039;N&#061;{row[&#034;N&#034;]}; integration_error&#061;{100*row[&#034;relative_error&#034;]:.6f}%&#039;)<br \/>\n        print(f&#039;observed_quadrature_order&#061;{summary[&#034;max_observed_quadrature_order&#034;]:.6f}&#039;)<br \/>\n        print(f&#039;Co&#061;{base[&#034;Co_estimate&#034;]:.3f}; dt_limit&#061;{base[&#034;dt_limit_s&#034;]:.6f} s&#039;)<br \/>\n        print(&#039;MODE&#061;QUADRATURE_AND_COURANT_ESTIMATE; OpenFOAM_NOT_RUN&#039;)<br \/>\n        return 0<br \/>\n    except (OSError,ValueError,ArithmeticError) as exc:<br \/>\n        print(&#039;INPUT_OR_OUTPUT_ERROR: &#039;&#043;str(exc))<br \/>\n        return 2<\/p>\n<p>if __name__ &#061;&#061; &#039;__main__&#039;:<br \/>\n    raise SystemExit(main())<\/p>\n<p>lesson55_channel.py&#xff1a;<\/p>\n<p>&#034;&#034;&#034;Analytical plane Poiseuille benchmark. No CFD equations are discretised or solved.&#034;&#034;&#034;<br \/>\nimport argparse<br \/>\nimport csv<br \/>\nimport json<br \/>\nimport math<br \/>\nfrom pathlib import Path<\/p>\n<p>def channel_profile(mu&#061;0.001, gradient&#061;2.0, n&#061;20):<br \/>\n    for name, value in ((&#039;mu&#039;, mu), (&#039;gradient&#039;, gradient)):<br \/>\n        if (isinstance(value, bool) or not isinstance(value, (int, float))<br \/>\n                or not math.isfinite(value) or value &lt;&#061; 0):<br \/>\n            raise ValueError(name &#043; &#039; must be a finite positive number&#039;)<br \/>\n    if type(n) is not int or not 2 &lt;&#061; n &lt;&#061; 10000:<br \/>\n        raise ValueError(&#039;n must be an integer in [2, 10000]&#039;)<br \/>\n    H, L, rho &#061; 0.01, 1.0, 1000.0<br \/>\n    nu &#061; mu\/rho<br \/>\n    y &#061; [H*i\/n for i in range(n&#043;1)]<br \/>\n    u &#061; [gradient*v*(H-v)\/(2*mu) for v in y]<br \/>\n    q &#061; gradient*H**3\/(12*mu)<br \/>\n    mean, maximum &#061; q\/H, gradient*H**2\/(8*mu)<br \/>\n    summary &#061; {&#039;source&#039;: &#039;ANALYTICAL_PLANE_POISEUILLE&#039;, &#039;OpenFOAM_run&#039;: False,<br \/>\n               &#039;parameters&#039;: {&#039;H_m&#039;: H, &#039;L_m&#039;: L, &#039;rho_kg_per_m3&#039;: rho,<br \/>\n                              &#039;mu_Pa_s&#039;: mu, &#039;G_Pa_per_m&#039;: gradient},<br \/>\n               &#039;nu_m2_per_s&#039;: nu, &#039;U_mean_m_per_s&#039;: mean, &#039;U_max_m_per_s&#039;: maximum,<br \/>\n               &#039;q_per_width_m2_per_s&#039;: q, &#039;Re_Dh&#039;: mean*(2*H)\/nu,<br \/>\n               &#039;delta_p_static_Pa&#039;: gradient*L,<br \/>\n               &#039;delta_p_kinematic_m2_per_s2&#039;: gradient*L\/rho}<br \/>\n    numeric &#061; [nu, mean, maximum, q, summary[&#039;Re_Dh&#039;], summary[&#039;delta_p_static_Pa&#039;],<br \/>\n               summary[&#039;delta_p_kinematic_m2_per_s2&#039;]] &#043; u<br \/>\n    if not all(math.isfinite(v) for v in numeric) or min(nu, mean, maximum, q) &lt;&#061; 0:<br \/>\n        raise ValueError(&#039;derived values are not finite and positive&#039;)<br \/>\n    checks &#061; {&#039;no_slip&#039;: u[0] &#061;&#061; 0 and u[-1] &#061;&#061; 0,<br \/>\n              &#039;symmetry&#039;: all(math.isclose(a, b, rel_tol&#061;1e-12, abs_tol&#061;1e-15)<br \/>\n                              for a, b in zip(u, reversed(u))),<br \/>\n              &#039;peak_to_mean&#039;: math.isclose(maximum\/mean, 1.5, rel_tol&#061;1e-12)}<br \/>\n    if not all(checks.values()):<br \/>\n        raise ValueError(&#039;analytical consistency checks failed&#039;)<br \/>\n    summary[&#039;analytical_checks&#039;] &#061; checks<br \/>\n    summary[&#039;profile_points&#039;] &#061; n&#043;1<br \/>\n    profile &#061; [{&#039;y_m&#039;: v, &#039;u_x_m_per_s&#039;: speed} for v, speed in zip(y, u)]<br \/>\n    pressure &#061; [{&#039;x_m&#039;: L*i\/4, &#039;p_static_Pa&#039;: gradient*(L-L*i\/4),<br \/>\n                 &#039;p_kinematic_m2_per_s2&#039;: gradient*(L-L*i\/4)\/rho} for i in range(5)]<br \/>\n    return summary, profile, pressure<\/p>\n<p>def self_test():<br \/>\n    base, rows, pressure &#061; channel_profile()<br \/>\n    assert len(rows) &#061;&#061; 21 and len(pressure) &#061;&#061; 5<br \/>\n    assert math.isclose(base[&#039;U_mean_m_per_s&#039;], 1\/60)<br \/>\n    assert math.isclose(base[&#039;U_max_m_per_s&#039;], .025)<br \/>\n    assert math.isclose(base[&#039;q_per_width_m2_per_s&#039;], 1\/6000)<br \/>\n    assert math.isclose(base[&#039;Re_Dh&#039;], 1000\/3)<br \/>\n    assert math.isclose(pressure[0][&#039;p_kinematic_m2_per_s2&#039;], .002)<br \/>\n    doubled, _, _ &#061; channel_profile(gradient&#061;4)<br \/>\n    viscous, _, _ &#061; channel_profile(mu&#061;.002)<br \/>\n    assert math.isclose(doubled[&#039;U_mean_m_per_s&#039;]\/base[&#039;U_mean_m_per_s&#039;], 2)<br \/>\n    assert math.isclose(viscous[&#039;U_mean_m_per_s&#039;]\/base[&#039;U_mean_m_per_s&#039;], .5)<br \/>\n    assert math.isclose(viscous[&#039;Re_Dh&#039;]\/base[&#039;Re_Dh&#039;], .25)<br \/>\n    for kwargs in ({&#039;mu&#039;: 0}, {&#039;mu&#039;: -1}, {&#039;gradient&#039;: float(&#039;nan&#039;)}, {&#039;n&#039;: 0}):<br \/>\n        try:<br \/>\n            channel_profile(**kwargs)<br \/>\n        except ValueError:<br \/>\n            pass<br \/>\n        else:<br \/>\n            raise AssertionError(&#039;invalid input accepted&#039;)<br \/>\n    print(&#039;SELF_TEST_OK&#039;)<\/p>\n<p>def main():<br \/>\n    parser &#061; argparse.ArgumentParser(description&#061;__doc__)<br \/>\n    parser.add_argument(&#039;&#8211;mu&#039;, type&#061;float, default&#061;.001, help&#061;&#039;dynamic viscosity, Pa s&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;gradient&#039;, type&#061;float, default&#061;2, help&#061;&#039;G&#061;-dp_static\/dx, Pa\/m&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;out&#039;, type&#061;Path, help&#061;&#039;new output directory; existing directory rejected&#039;)<br \/>\n    parser.add_argument(&#039;&#8211;self-test&#039;, action&#061;&#039;store_true&#039;)<br \/>\n    args &#061; parser.parse_args()<br \/>\n    if args.self_test:<br \/>\n        self_test()<br \/>\n        return 0<br \/>\n    try:<br \/>\n        summary, profile, pressure &#061; channel_profile(mu&#061;args.mu, gradient&#061;args.gradient)<br \/>\n        if args.out:<br \/>\n            args.out.mkdir(parents&#061;True, exist_ok&#061;False)<br \/>\n            (args.out\/&#039;summary.json&#039;).write_text(json.dumps(summary, indent&#061;2, allow_nan&#061;False), encoding&#061;&#039;utf-8&#039;)<br \/>\n            for name, rows in ((&#039;profile.csv&#039;, profile), (&#039;pressure.csv&#039;, pressure)):<br \/>\n                with (args.out\/name).open(&#039;x&#039;, newline&#061;&#039;&#039;, encoding&#061;&#039;utf-8-sig&#039;) as handle:<br \/>\n                    writer &#061; csv.DictWriter(handle, fieldnames&#061;list(rows[0]))<br \/>\n                    writer.writeheader()<br \/>\n                    writer.writerows(rows)<br \/>\n        print(&#039;MODE&#061;ANALYTICAL; OpenFOAM_NOT_RUN&#039;)<br \/>\n        print(f&#039;nu&#061;{summary[&#034;nu_m2_per_s&#034;]:.9e} m2\/s&#039;)<br \/>\n        print(f&#039;U_mean&#061;{summary[&#034;U_mean_m_per_s&#034;]:.6f} m\/s; U_max&#061;{summary[&#034;U_max_m_per_s&#034;]:.6f} m\/s&#039;)<br \/>\n        print(f&#039;q_per_width&#061;{summary[&#034;q_per_width_m2_per_s&#034;]:.9f} m2\/s; Re_Dh&#061;{summary[&#034;Re_Dh&#034;]:.3f}&#039;)<br \/>\n        print(f&#039;delta_p_static&#061;{summary[&#034;delta_p_static_Pa&#034;]:.6f} Pa; delta_p_kinematic&#061;{summary[&#034;delta_p_kinematic_m2_per_s2&#034;]:.9f} m2\/s2&#039;)<br \/>\n        print(&#039;ANALYTICAL_CHECKS&#061;PASS&#039;)<br \/>\n        return 0<br \/>\n    except (OSError, ValueError, ArithmeticError) as exc:<br \/>\n        print(&#039;INPUT_OR_OUTPUT_ERROR: &#039; &#043; str(exc))<br \/>\n        return 2<\/p>\n<p>if __name__ &#061;&#061; &#039;__main__&#039;:<br \/>\n    raise SystemExit(main())<\/p>\n<p>\u4e3b\u7a0b\u5e8f\u53ea\u4f7f\u7528Python\u6807\u51c6\u5e93\u3002<\/p>\n<h4>10.1 \u6267\u884c\u81ea\u68c0<\/h4>\n<p>python lesson56_settings.py &#8211;self-test <\/p>\n<p>\u9884\u671f\u8f93\u51fa&#xff1a;<\/p>\n<p>SELF_TEST_OK <\/p>\n<h4>10.2 \u8fd0\u884c\u7ec3\u4e60<\/h4>\n<p>python lesson56_settings.py <\/p>\n<p>\u5b9e\u6d4b\u8f93\u51fa&#xff1a;<\/p>\n<p>N&#061;10; integration_error&#061;1.000000%<br \/>\nN&#061;20; integration_error&#061;0.250000%<br \/>\nN&#061;40; integration_error&#061;0.062500%<br \/>\nN&#061;80; integration_error&#061;0.015625%<br \/>\nobserved_quadrature_order&#061;2.000000<br \/>\nCo&#061;0.200; dt_limit&#061;0.005000 s<br \/>\nMODE&#061;QUADRATURE_AND_COURANT_ESTIMATE; OpenFOAM_NOT_RUN <\/p>\n<p>\u5176\u4e2d&#xff1a;<\/p>\n<ul>\n<li>\u79ef\u5206\u4f7f\u7528\u4e0a\u4e00\u8282\u7684\u7269\u7406\u57fa\u51c6&#xff1b;<\/li>\n<li>Co\u9ed8\u8ba4\u901f\u5ea6\u91c7\u7528\u72ec\u7acb\u6559\u5b66\u503c0.1 m\/s&#xff1b;<\/li>\n<li>\u8f93\u51fa\u660e\u786e\u6807\u6ce8\u672a\u8fd0\u884cOpenFOAM\u3002<\/li>\n<\/ul>\n<h4>10.3 \u4fdd\u5b58\u6570\u636e<\/h4>\n<p>python lesson56_settings.py &#8211;out run56_01 <\/p>\n<p>\u63a7\u5236\u53f0\u6570\u503c\u4e0d\u53d8&#xff0c;\u540c\u65f6\u751f\u6210&#xff1a;<\/p>\n<p>run56_01\/<br \/>\n    quadrature.csv<br \/>\n    courant_cases.csv<br \/>\n    summary.json <\/p>\n<p>\u8bfe\u7a0b\u5305\u5df2\u7ecf\u5305\u542breference_run\u6837\u672c\u3002\u91cd\u65b0\u8fd0\u884c\u65f6\u8bf7\u4f7f\u7528\u65b0\u76ee\u5f55&#xff0c;\u5df2\u6709\u8f93\u51fa\u76ee\u5f55\u4e0d\u4f1a\u88ab\u8986\u76d6\u3002<\/p>\n<h4>10.4 \u4f7f\u7528\u4e0a\u4e00\u8282\u6700\u5927\u901f\u5ea6<\/h4>\n<p>python lesson56_settings.py &#8211;speed 0.025 <\/p>\n<p>\u5173\u952e\u8f93\u51fa&#xff1a;<\/p>\n<p>Co&#061;0.050; dt_limit&#061;0.020000 s <\/p>\n<h4>10.5 \u53ea\u628a\u6d41\u5411\u95f4\u8ddd\u51cf\u534a<\/h4>\n<p>python lesson56_settings.py &#8211;dx 0.0005 <\/p>\n<p>\u5173\u952e\u8f93\u51fa&#xff1a;<\/p>\n<p>Co&#061;0.400; dt_limit&#061;0.002500 s <\/p>\n<p>\u8fd9\u4e24\u6761\u547d\u4ee4\u4ecd\u4f1a\u6253\u5370\u76f8\u540c\u7684\u79ef\u5206\u8bef\u5dee\u8868&#xff0c;\u56e0\u4e3a\u5b83\u4eec\u53ea\u6539\u53d8Co\u4f30\u7b97\u8f93\u5165\u3002<\/p>\n<h3>\u5341\u4e00\u3001\u67e5\u770b\u5b9e\u9645\u7ed3\u679c\u56fe<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"864\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261020175643-6ad7ab5ba1565.png\" width=\"2250\" \/><\/p>\n<p>\u5de6\u56fe\u5c55\u793a\u89e3\u6790\u901f\u5ea6\u91c7\u6837\u7684\u68af\u5f62\u79ef\u5206\u8bef\u5dee\u3002<\/p>\n<p>\u53f3\u56fe\u5c55\u793a\u6559\u5b66\u901f\u5ea60.1 m\/s\u4e0b&#xff0c;\u95f4\u8ddd\u548c\u65f6\u95f4\u6b65\u53d8\u5316\u5bf9Co\u4f30\u7b97\u7684\u5f71\u54cd\u3002<\/p>\n<p>\u7ea2\u8272\u865a\u7ebf\u662f\u8bfe\u5802\u793a\u4f8b\u76ee\u6807&#xff0c;\u4e0d\u662f\u666e\u904d\u5b89\u5168\u7ebf\u3002<\/p>\n<p>\u9700\u8981\u91cd\u65b0\u751f\u6210\u4e24\u5f20\u914d\u56fe\u65f6&#xff0c;\u5c06plot_lesson56.py\u4e0e\u65f6\u95f4\u6b65plot_lesson56.py\u653e\u5728\u540c\u4e00\u76ee\u5f55&#xff0c;\u5728\u5b89\u88c5\u4e86Matplotlib\u7684\u73af\u5883\u8fd0\u884c&#xff1a;<\/p>\n<p>python plot_lesson56.py &#8211;data run56_01 &#8211;out figures56_01 <\/p>\n<p>\u9884\u671f\u8f93\u51fa&#xff1a;<\/p>\n<p>FIGURES_OK: lesson56_error_and_courant.png, lesson56_boundary_map.png <\/p>\n<p>\u6ca1\u6709Matplotlib\u4e5f\u4e0d\u5f71\u54cd\u4e3b\u7a0b\u5e8f&#xff0c;\u53ef\u4ee5\u76f4\u63a5\u9605\u8bfb\u6750\u6599\u4e2d\u7684\u914d\u56fe\u3002<\/p>\n<h3>\u5341\u4e8c\u3001\u600e\u6837\u8bbe\u8ba1\u771f\u6b63\u7684\u7a7a\u95f4\u4e0e\u65f6\u95f4\u7814\u7a76&#xff1f;<\/h3>\n<p>\u4e0b\u9762\u662f\u4e00\u4efd\u7814\u7a76\u8ba1\u5212&#xff0c;\u4e0d\u662f\u5df2\u7ecf\u8ba1\u7b97\u5b8c\u6210\u7684CFD\u7ed3\u679c\u3002<\/p>\n<table>\n<tr>\u7f51\u683c\\\\(N_x\\\\times N_y\\\\times N_z\\\\)\u5355\u5143\u6570\\\\(\\\\Delta x\\\\)\/m\\\\(\\\\Delta y\\\\)\/m<\/tr>\n<tbody>\n<tr>\n<td>G1<\/td>\n<td>500\u00d710\u00d71<\/td>\n<td>5000<\/td>\n<td>0.002<\/td>\n<td>0.001<\/td>\n<\/tr>\n<tr>\n<td>G2<\/td>\n<td>1000\u00d720\u00d71<\/td>\n<td>20000<\/td>\n<td>0.001<\/td>\n<td>0.0005<\/td>\n<\/tr>\n<tr>\n<td>G3<\/td>\n<td>2000\u00d740\u00d71<\/td>\n<td>80000<\/td>\n<td>0.0005<\/td>\n<td>0.00025<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6bcf\u5f20\u7f51\u683c\u90fd\u9700\u8981\u91cd\u65b0\u6c42\u89e3&#xff0c;\u5e76\u63d0\u53d6\u540c\u4e00\u6307\u6807&#xff0c;\u4f8b\u5982&#xff1a;<\/p>\n<ul>\n<li>\u5355\u4f4d\u5bbd\u5ea6\u6d41\u91cf&#xff1b;<\/li>\n<li>\u540c\u4e00\u622a\u9762\u7684\u901f\u5ea6\u5256\u9762\u8bef\u5dee&#xff1b;<\/li>\n<li>\u58c1\u9762\u526a\u5e94\u529b\u3002<\/li>\n<\/ul>\n<p>\u6307\u6807\u8fd8\u8981\u7ed3\u5408\u9a71\u52a8\u65b9\u5f0f\u9009\u62e9\u3002\u5982\u679c\u538b\u529b\u5dee\u672c\u6765\u5c31\u662f\u6307\u5b9a\u7684\u8f93\u5165&#xff0c;\u4ec5\u770b\u5230\u5b83\u5728\u5404\u5de5\u51b5\u76f8\u540c&#xff0c;\u4e0d\u80fd\u8bc1\u660e\u89e3\u5df2\u7ecf\u6536\u655b\u3002<\/p>\n<h4>\u7a7a\u95f4\u7814\u7a76<\/h4>\n<p>\u4fdd\u6301\u51e0\u4f55\u3001\u7269\u6027\u3001\u8fb9\u754c\u548c\u63d0\u53d6\u65b9\u5f0f\u4e00\u81f4&#xff0c;\u63a7\u5236\u8fed\u4ee3\u4e0e\u65f6\u95f4\u8bef\u5dee\u3002<\/p>\n<p>\u5982\u679c\u968f\u7f51\u683c\u52a0\u5bc6\u540c\u65f6\u7f29\u5c0f\u65f6\u95f4\u6b65&#xff0c;\u7ed3\u679c\u53d8\u5316\u53ef\u80fd\u6df7\u5408\u4e86\u7a7a\u95f4\u548c\u65f6\u95f4\u5f71\u54cd&#xff0c;\u4e0d\u80fd\u5168\u90e8\u5f52\u56e0\u4e8e\u7f51\u683c\u3002<\/p>\n<h4>\u65f6\u95f4\u7814\u7a76<\/h4>\n<p>\u56fa\u5b9a\u7a7a\u95f4\u7f51\u683c&#xff0c;\u6bd4\u8f83\u4e0d\u540c\u65f6\u95f4\u6b65\u5728\u76f8\u540c\u7269\u7406\u65f6\u523b\u7684\u54cd\u5e94\u3002<\/p>\n<p>\u5982\u679c\u8981\u4e0e\u7a33\u6001\u89e3\u6790\u89e3\u6bd4\u8f83&#xff0c;\u8fd8\u5e94\u786e\u8ba4\u5df2\u7ecf\u8fbe\u5230\u7a33\u6001\u3002\u91c7\u7528\u5c0f\u65f6\u95f4\u6b65&#xff0c;\u4e0d\u7b49\u4e8e\u5df2\u7ecf\u5145\u5206\u53d1\u5c55\u6216\u8fbe\u5230\u7a33\u6001\u3002<\/p>\n<p>\u5efa\u8bae\u81f3\u5c11\u7528\u4e09\u7ec4\u6709\u89c4\u5f8b\u7684\u8bbe\u7f6e\u68c0\u67e5\u8d8b\u52bf\u3002\u4f30\u8ba1\u89c2\u5bdf\u9636\u6570\u6216\u5916\u63a8\u8bef\u5dee\u65f6&#xff0c;\u8fd8\u8981\u68c0\u67e5\u52a0\u5bc6\u65b9\u5f0f\u3001\u6e10\u8fd1\u533a\u548c\u7ed3\u679c\u884c\u4e3a&#xff0c;\u4e0d\u80fd\u673a\u68b0\u5957\u7528\u672c\u8282\u79ef\u5206\u5b9e\u9a8c\u7684\u4e8c\u9636\u7ed3\u8bba\u3002<\/p>\n<h3>\u5341\u4e09\u3001\u8bfe\u540e\u7ec3\u4e60\u4e0e\u9a8c\u6536<\/h3>\n<h4>\u7ec3\u4e60\u4e00&#xff1a;\u7ee7\u7eed\u589e\u52a0\u5206\u6bb5\u6570<\/h4>\n<p>\u5f53&#xff1a;<\/p>\n<p>\\\\[ N&#061;160 \\\\]<\/p>\n<p>\u65f6&#xff0c;\u79ef\u5206\u8bef\u5dee\u9884\u8ba1\u662f\u591a\u5c11&#xff1f;<\/p>\n<p>\u53c2\u8003\u7b54\u6848&#xff1a;<\/p>\n<p>\\\\[ e_q &#061; \\\\frac1{160^2} &#061; 0.00390625\\\\%. \\\\]<\/p>\n<h4>\u7ec3\u4e60\u4e8c&#xff1a;\u4fdd\u6301Co\u4e0d\u53d8<\/h4>\n<p>\u56fa\u5b9a\u901f\u5ea6&#xff0c;\u5c06\u6d41\u5411\u95f4\u8ddd\u51cf\u534a&#xff0c;\u65f6\u95f4\u6b65\u5e94\u8be5\u600e\u6837\u53d8\u5316&#xff1f;<\/p>\n<p>\u53c2\u8003\u7b54\u6848&#xff1a;\u5728\u672c\u8282\u4e00\u7ef4\u4f30\u7b97\u4e2d&#xff0c;\u65f6\u95f4\u6b65\u4e5f\u5e94\u51cf\u534a\u3002<\/p>\n<h4>\u7ec3\u4e60\u4e09&#xff1a;\u7a33\u5b9a\u7ed3\u679c\u662f\u5426\u4e00\u5b9a\u6b63\u786e&#xff1f;<\/h4>\n<p>\u58c1\u9762\u8bef\u8bbe\u4e3a\u6ed1\u79fb&#xff0c;\u7f51\u683c\u52a0\u5bc6\u540e\u7ed3\u679c\u975e\u5e38\u7a33\u5b9a&#xff0c;\u53ef\u4ee5\u8ba4\u4e3a\u6b63\u786e\u5417&#xff1f;<\/p>\n<p>\u53c2\u8003\u7b54\u6848&#xff1a;\u4e0d\u80fd\u3002\u5b83\u53ef\u80fd\u6536\u655b\u5230\u4e86\u53e6\u4e00\u4e2a\u7269\u7406\u95ee\u9898\u3002<\/p>\n<h4>\u7ec3\u4e60\u56db&#xff1a;\u7f51\u683c\u68c0\u67e5\u662f\u5426\u66ff\u4ee3\u8fb9\u754c\u68c0\u67e5&#xff1f;<\/h4>\n<p>checkMesh\u901a\u8fc7\u4ee5\u540e&#xff0c;\u662f\u5426\u8fd8\u8981\u6838\u5bf9U\u3001p\u7684\u8fb9\u754c\u8bbe\u7f6e&#xff1f;<\/p>\n<p>\u53c2\u8003\u7b54\u6848&#xff1a;\u8981\u3002\u7f51\u683c\u68c0\u67e5\u4e0d\u7b49\u4e8e\u5b8c\u6574\u7684\u7269\u7406\u4e0e\u6570\u503c\u9a8c\u6536\u3002<\/p>\n<h4>\u672c\u8282\u4ea4\u4ed8<\/h4>\n<p>\u51c6\u5907\u4e24\u4efd\u8868&#xff1a;<\/p>\n<li>\u5df2\u8fd0\u884c\u7684\u79ef\u5206\u8bef\u5dee\u8868\u3002<\/li>\n<li>\u5c1a\u5f85\u771f\u5b9e\u6c42\u89e3\u7684CFD\u7a7a\u95f4\u2014\u65f6\u95f4\u7814\u7a76\u8ba1\u5212\u3002<\/li>\n<p>\u80fd\u591f\u533a\u5206\u4ee5\u4e0b\u4e09\u7c7b\u4fe1\u606f&#xff0c;\u4e5f\u662f\u9a8c\u6536\u8981\u6c42&#xff1a;<\/p>\n<p>\u5b9e\u6d4bPython\u8f93\u51fa<br \/>\n\u5b57\u5178\u8bbe\u8ba1\u63a8\u7b97<br \/>\n\u5c1a\u672a\u6267\u884c\u7684OpenFOAM\u64cd\u4f5c <\/p>\n<h3>\u5341\u56db\u3001\u672c\u8282\u5c0f\u7ed3\u4e0e\u4e0b\u4e00\u8282<\/h3>\n<p>\u53ef\u9760\u7684CFD\u8bbe\u7f6e&#xff0c;\u4e0d\u662f\u7b80\u5355\u5730\u628a\u7f51\u683c\u52a0\u5bc6\u3001\u65f6\u95f4\u6b65\u7f29\u5c0f\u3001\u6b8b\u5dee\u538b\u4f4e&#xff0c;\u800c\u662f\u8ba9\u6bcf\u4e2a\u8bbe\u7f6e\u670d\u52a1\u4e8e\u540c\u4e00\u4e2a\u6b63\u786e\u7269\u7406\u95ee\u9898\u3002<\/p>\n<p>\u672c\u8282\u6700\u91cd\u8981\u7684\u8ba4\u8bc6\u662f&#xff1a;<\/p>\n<p>\u7f51\u683c\u8d28\u91cf\u3001\u8fb9\u754c\u6b63\u786e\u6027\u3001\u7a7a\u95f4\u8bef\u5dee\u3001\u65f6\u95f4\u8bef\u5dee\u548c\u8fed\u4ee3\u8bef\u5dee&#xff0c;\u9700\u8981\u5206\u522b\u68c0\u67e5&#xff0c;\u4e0d\u80fd\u5f7c\u6b64\u66ff\u4ee3\u3002<\/p>\n<p>\u4e0b\u4e00\u8282\u5c06\u6309\u7167\u8bfe\u7a0b\u76ee\u5f55&#xff0c;\u8fdb\u5165\u201cOpenFOAM\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316\u201d&#xff0c;\u628a\u7f51\u683c\u751f\u6210\u3001\u7f51\u683c\u68c0\u67e5\u3001\u6c42\u89e3\u3001\u540e\u5904\u7406\u548c\u505c\u6b62\u6761\u4ef6\u7ec4\u7ec7\u8d77\u6765\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8bfe\u7a0b\u6458\u8981<br \/>\n\u672c\u8282\u627f\u63a5\u5e73\u884c\u677f\u5c42\u6d41\u57fa\u51c6&#xff0c;\u7cfb\u7edf\u8bb2\u89e3CFD\u7f51\u683c\u8d28\u91cf\u3001\u5165\u53e3\u2014\u51fa\u53e3\u4e0e\u58c1\u9762\u8fb9\u754c\u7684\u914d\u5408&#xff0c;\u4ee5\u53ca\u65f6\u95f4\u6b65\u548cCourant\u6570\u7684\u5173\u7cfb\u3002\u901a\u8fc7\u53ef\u8fd0\u884cPython\u7ec3\u4e60&#xff0c;\u89c2\u5bdf\u89e3\u6790\u6d41\u91cf\u7684\u79ef\u5206\u8bef\u5dee&#xff0c;\u5e76\u660e\u786e\u5b83\u4e0e\u771f\u5b9eCFD\u7f51\u683c\u6536\u655b\u7684\u533a\u522b&#xff1b;\u7ed3\u5408\u4e8c\u7ef4\u7f51\u683c\u6a21\u677f\u3001\u8fb9\u754c\u793a\u610f\u56fe\u548c\u7a7a\u95f4\u2014\u65f6\u95f4\u7814\u7a76\u8ba1\u5212&#xff0c;\u5b66\u4e60\u5982\u4f55\u8bb0\u5f55\u3001\u68c0\u67e5\u4e0e\u89e3\u91ca\u79bb\u6563\u8bbe\u7f6e&#xff0c;\u4e3a\u540e\u7eedOpenFOAM\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316\u5960\u5b9a\u57fa\u7840\u3002 \u4e00\u3001\u6709\u4e86\u89e3\u6790\u89e3&#xff0c;\u4e3a\u4ec0\u4e48\u4ecd\u7136<\/p>\n","protected":false},"author":2,"featured_media":116259,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[50],"topic":[],"class_list":["post-116262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-50"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/116262.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u8bfe\u7a0b\u6458\u8981 \u672c\u8282\u627f\u63a5\u5e73\u884c\u677f\u5c42\u6d41\u57fa\u51c6&#xff0c;\u7cfb\u7edf\u8bb2\u89e3CFD\u7f51\u683c\u8d28\u91cf\u3001\u5165\u53e3\u2014\u51fa\u53e3\u4e0e\u58c1\u9762\u8fb9\u754c\u7684\u914d\u5408&#xff0c;\u4ee5\u53ca\u65f6\u95f4\u6b65\u548cCourant\u6570\u7684\u5173\u7cfb\u3002\u901a\u8fc7\u53ef\u8fd0\u884cPython\u7ec3\u4e60&#xff0c;\u89c2\u5bdf\u89e3\u6790\u6d41\u91cf\u7684\u79ef\u5206\u8bef\u5dee&#xff0c;\u5e76\u660e\u786e\u5b83\u4e0e\u771f\u5b9eCFD\u7f51\u683c\u6536\u655b\u7684\u533a\u522b&#xff1b;\u7ed3\u5408\u4e8c\u7ef4\u7f51\u683c\u6a21\u677f\u3001\u8fb9\u754c\u793a\u610f\u56fe\u548c\u7a7a\u95f4\u2014\u65f6\u95f4\u7814\u7a76\u8ba1\u5212&#xff0c;\u5b66\u4e60\u5982\u4f55\u8bb0\u5f55\u3001\u68c0\u67e5\u4e0e\u89e3\u91ca\u79bb\u6563\u8bbe\u7f6e&#xff0c;\u4e3a\u540e\u7eedOpenFOAM\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316\u5960\u5b9a\u57fa\u7840\u3002 \u4e00\u3001\u6709\u4e86\u89e3\u6790\u89e3&#xff0c;\u4e3a\u4ec0\u4e48\u4ecd\u7136\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/116262.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-20T17:56:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261020175640-6ad7ab58c9875.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/116262.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/116262.html\",\"name\":\"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-10-20T17:56:45+00:00\",\"dateModified\":\"2026-10-20T17:56:45+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/116262.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/116262.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/116262.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/116262.html","og_locale":"zh_CN","og_type":"article","og_title":"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u8bfe\u7a0b\u6458\u8981 \u672c\u8282\u627f\u63a5\u5e73\u884c\u677f\u5c42\u6d41\u57fa\u51c6&#xff0c;\u7cfb\u7edf\u8bb2\u89e3CFD\u7f51\u683c\u8d28\u91cf\u3001\u5165\u53e3\u2014\u51fa\u53e3\u4e0e\u58c1\u9762\u8fb9\u754c\u7684\u914d\u5408&#xff0c;\u4ee5\u53ca\u65f6\u95f4\u6b65\u548cCourant\u6570\u7684\u5173\u7cfb\u3002\u901a\u8fc7\u53ef\u8fd0\u884cPython\u7ec3\u4e60&#xff0c;\u89c2\u5bdf\u89e3\u6790\u6d41\u91cf\u7684\u79ef\u5206\u8bef\u5dee&#xff0c;\u5e76\u660e\u786e\u5b83\u4e0e\u771f\u5b9eCFD\u7f51\u683c\u6536\u655b\u7684\u533a\u522b&#xff1b;\u7ed3\u5408\u4e8c\u7ef4\u7f51\u683c\u6a21\u677f\u3001\u8fb9\u754c\u793a\u610f\u56fe\u548c\u7a7a\u95f4\u2014\u65f6\u95f4\u7814\u7a76\u8ba1\u5212&#xff0c;\u5b66\u4e60\u5982\u4f55\u8bb0\u5f55\u3001\u68c0\u67e5\u4e0e\u89e3\u91ca\u79bb\u6563\u8bbe\u7f6e&#xff0c;\u4e3a\u540e\u7eedOpenFOAM\u5de5\u4f5c\u6d41\u81ea\u52a8\u5316\u5960\u5b9a\u57fa\u7840\u3002 \u4e00\u3001\u6709\u4e86\u89e3\u6790\u89e3&#xff0c;\u4e3a\u4ec0\u4e48\u4ecd\u7136","og_url":"https:\/\/www.wsisp.com\/helps\/116262.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-10-20T17:56:45+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2026\/10\/20261020175640-6ad7ab58c9875.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"11 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/116262.html","url":"https:\/\/www.wsisp.com\/helps\/116262.html","name":"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-10-20T17:56:45+00:00","dateModified":"2026-10-20T17:56:45+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/116262.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/116262.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/116262.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u3010\u96f6\u57fa\u7840\u5b66\u667a\u80fd\u4eff\u771f-56\u3011CFD\u7f51\u683c\u3001\u8fb9\u754c\u6761\u4ef6\u4e0e\u65f6\u95f4\u6b65"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/116262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=116262"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/116262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/116259"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=116262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=116262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=116262"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=116262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}