<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://ectorwang.github.io//feed.xml" rel="self" type="application/atom+xml" /><link href="https://ectorwang.github.io//" rel="alternate" type="text/html" /><updated>2025-05-21T01:48:35+00:00</updated><id>https://ectorwang.github.io//feed.xml</id><title type="html">EctorWang‘s Website</title><subtitle>Your Site Description Record the study careers and life of EctorWang.
</subtitle><author><name>Ector Wang</name></author><entry><title type="html">Research Report Template</title><link href="https://ectorwang.github.io//2025/05/15/Research-Report.html" rel="alternate" type="text/html" title="Research Report Template" /><published>2025-05-15T00:00:00+00:00</published><updated>2025-05-15T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/15/Research-Report</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/15/Research-Report.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-15,16:54</p>
</blockquote>

<h1 id="工作汇报">工作汇报</h1>
<h2 id="工作汇报的流程顺序">工作汇报的流程顺序</h2>
<h3 id="时间顺序">时间顺序</h3>
<ul>
  <li><strong>汇报前</strong>
    <ul>
      <li>这次汇报要达到什么目的</li>
      <li>在什么场合</li>
      <li>面向谁汇报</li>
      <li>汇报对象的核心诉求</li>
      <li>一句话概括出汇报主题</li>
    </ul>
  </li>
  <li><strong>汇报中</strong>
    <ul>
      <li>目标是什么</li>
      <li>采取了什么行动</li>
      <li>结果是什么</li>
      <li>针对于这个结果我的改进措施是什么</li>
    </ul>
  </li>
  <li><strong>汇报后</strong>
    <ul>
      <li><strong>回复汇报领导反馈意见</strong></li>
      <li>夸 - 批评 - 提建议</li>
      <li><strong>复盘调整</strong></li>
      <li>汇报内容复盘调整 -
  领导反馈意见复盘调整 ## GARS框架
        <h3 id="结构顺序">结构顺序</h3>
      </li>
      <li>目标：这次汇报目标是什么</li>
      <li>行动：采取了什么行动</li>
      <li>结果：结果是什么</li>
      <li>挂钩：针对于这个结果我的改进措施是什么
        <h2 id="5w1h">5W1H</h2>
        <h3 id="结构顺序-1">结构顺序</h3>
      </li>
      <li>why：这次汇报要达到什么目的</li>
      <li>what：汇报的内容是什么</li>
      <li>when：什么时间汇报，汇报多久</li>
      <li>where：在什么地点进行汇报</li>
      <li>who：汇报人是谁，是否有其他人</li>
      <li>how：怎么汇报，电话、会议室圆桌、上台讲PPT等</li>
    </ul>
  </li>
</ul>

<h2 id="共性工作汇报的构成要素">共性：工作汇报的构成要素</h2>
<h3 id="重要性顺序">重要性顺序</h3>
<ul>
  <li><strong>人</strong>
    <ul>
      <li>汇报人是谁，是否有其他人</li>
      <li>汇报的目标</li>
    </ul>
  </li>
  <li><strong>事</strong>
    <ul>
      <li>汇报工作的内容</li>
      <li>汇报后的做法</li>
    </ul>
  </li>
  <li><strong>物</strong>
    <ul>
      <li>需要准备得物品</li>
    </ul>
  </li>
</ul>]]></content><author><name>Ector Wang</name></author><category term="Writing" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-15,16:54 工作汇报 工作汇报的流程顺序 时间顺序 汇报前 这次汇报要达到什么目的 在什么场合 面向谁汇报 汇报对象的核心诉求 一句话概括出汇报主题 汇报中 目标是什么 采取了什么行动 结果是什么 针对于这个结果我的改进措施是什么 汇报后 回复汇报领导反馈意见 夸 - 批评 - 提建议 复盘调整 汇报内容复盘调整 - 领导反馈意见复盘调整 ## GARS框架 结构顺序 目标：这次汇报目标是什么 行动：采取了什么行动 结果：结果是什么 挂钩：针对于这个结果我的改进措施是什么 5W1H 结构顺序 why：这次汇报要达到什么目的 what：汇报的内容是什么 when：什么时间汇报，汇报多久 where：在什么地点进行汇报 who：汇报人是谁，是否有其他人 how：怎么汇报，电话、会议室圆桌、上台讲PPT等 共性：工作汇报的构成要素 重要性顺序 人 汇报人是谁，是否有其他人 汇报的目标 事 汇报工作的内容 汇报后的做法 物 需要准备得物品]]></summary></entry><entry><title type="html">Critical-writig</title><link href="https://ectorwang.github.io//2025/05/13/Critical-writig.html" rel="alternate" type="text/html" title="Critical-writig" /><published>2025-05-13T00:00:00+00:00</published><updated>2025-05-13T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/13/Critical-writig</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/13/Critical-writig.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-13,20:09</p>
</blockquote>

<h2 id="what-to-why是什么变为为什么">What To Why是什么变为为什么？</h2>

<p><strong>从看文献是什么内容？</strong>
<strong>解释了什么现象？</strong>
<strong>提出了什么观点？</strong></p>

<p>变为了</p>

<p><strong>文章为什么要这样写的？</strong>
<strong>作者提出的观点的原因是什么？</strong>
<strong>作者为什么要提出这样的观点？</strong>
<strong>提出这样的观点是否有效？</strong>
<strong>哪些内容是真正有用的？</strong></p>

<h3 id="descriptive-vs-critical-writing">“Descriptive vs Critical Writing”</h3>
<p>（描述性写作与批判性写作） 。内容以表格形式对比两者特点：</p>

<blockquote>
  <p>[!info] <strong>描述性写作（DESCRIPTIVE）</strong></p>
  <ul>
    <li>States what happened（陈述发生了什么）</li>
    <li>States what something is like（描述某物是什么样的）</li>
    <li>Gives the story so far（讲述到目前为止的故事）</li>
    <li>States the order in which things happened（陈述事情发生的顺序） - Explains what a theory says（解释一个理论的内容）</li>
    <li>Explains how something works（解释某物如何运作）</li>
  </ul>
</blockquote>

<blockquote>
  <p>[!info] <strong>批判性写作（CRITICAL）</strong></p>
  <ul>
    <li>Identifies the significance（识别重要性）</li>
    <li>Evaluates (judges the value) strengths and weaknesses（评估（判断价值）优缺点 ）</li>
    <li>Weighs one piece of information against another（权衡不同信息 ）</li>
    <li>Makes reasoned judgements（做出合理判断 ）</li>
    <li>Shows why something is relevant or suitable（说明某事为何相关或合适 ） - Indicates why something will work (best)（指出某事为何（最）有效 ）</li>
  </ul>
</blockquote>

<h3 id="简要分析">简要分析</h3>
<ul>
  <li><strong>目的差异</strong>：</li>
</ul>

<p>描述性写作侧重客观呈现事实、现象、理论等内容，是基础信息的传递；
批判性写作更关注对事物的价值判断、分析比较及深层次阐释，旨在挖掘事物的内在意义和价值 。</p>

<ul>
  <li>
    <p><strong>思维层次</strong>：
描述性写作处于较浅的信息陈述层面；
批判性写作要求作者具备更高阶的思维能力，如分析、评估、推理等，需深入思考事物本质及关联 。</p>
  </li>
  <li>
    <p><strong>应用场景</strong>：描述性写作常见于报告、说明类文本，用于提供清晰信息；批判性写作多在学术论文、评论文章中，助力深入剖析问题、推进观点论证 。</p>
  </li>
</ul>]]></content><author><name>Ector Wang</name></author><category term="Writing" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-13,20:09 What To Why是什么变为为什么？ 从看文献是什么内容？ 解释了什么现象？ 提出了什么观点？ 变为了 文章为什么要这样写的？ 作者提出的观点的原因是什么？ 作者为什么要提出这样的观点？ 提出这样的观点是否有效？ 哪些内容是真正有用的？ “Descriptive vs Critical Writing” （描述性写作与批判性写作） 。内容以表格形式对比两者特点： [!info] 描述性写作（DESCRIPTIVE） States what happened（陈述发生了什么） States what something is like（描述某物是什么样的） Gives the story so far（讲述到目前为止的故事） States the order in which things happened（陈述事情发生的顺序） - Explains what a theory says（解释一个理论的内容） Explains how something works（解释某物如何运作） [!info] 批判性写作（CRITICAL） Identifies the significance（识别重要性） Evaluates (judges the value) strengths and weaknesses（评估（判断价值）优缺点 ） Weighs one piece of information against another（权衡不同信息 ） Makes reasoned judgements（做出合理判断 ） Shows why something is relevant or suitable（说明某事为何相关或合适 ） - Indicates why something will work (best)（指出某事为何（最）有效 ） 简要分析 目的差异： 描述性写作侧重客观呈现事实、现象、理论等内容，是基础信息的传递； 批判性写作更关注对事物的价值判断、分析比较及深层次阐释，旨在挖掘事物的内在意义和价值 。 思维层次： 描述性写作处于较浅的信息陈述层面； 批判性写作要求作者具备更高阶的思维能力，如分析、评估、推理等，需深入思考事物本质及关联 。 应用场景：描述性写作常见于报告、说明类文本，用于提供清晰信息；批判性写作多在学术论文、评论文章中，助力深入剖析问题、推进观点论证 。]]></summary></entry><entry><title type="html">Search for relevant references by using a single sentence</title><link href="https://ectorwang.github.io//2025/05/11/search-for-relevant-references.html" rel="alternate" type="text/html" title="Search for relevant references by using a single sentence" /><published>2025-05-11T00:00:00+00:00</published><updated>2025-05-11T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/11/search-for-relevant-references</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/11/search-for-relevant-references.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-11,22:49</p>
</blockquote>

<h2 id="如何根据一句话查找参考文献">如何根据一句话查找参考文献</h2>

<blockquote>
  <p>[!note] 查找参考文献</p>
  <ol>
    <li>复制论文中的一句话</li>
    <li>翻译为英文</li>
    <li>在 WOS 中使用research-assistant 功能找相关主题的文章
https://webofscience.clarivate.cn/wos/research-assistant/</li>
    <li>根据推荐的文章，选择相关的进行引用</li>
  </ol>
</blockquote>]]></content><author><name>Ector Wang</name></author><category term="Writing" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-11,22:49 如何根据一句话查找参考文献 [!note] 查找参考文献 复制论文中的一句话 翻译为英文 在 WOS 中使用research-assistant 功能找相关主题的文章 https://webofscience.clarivate.cn/wos/research-assistant/ 根据推荐的文章，选择相关的进行引用]]></summary></entry><entry><title type="html">Thesis Writing</title><link href="https://ectorwang.github.io//2025/05/10/thesis-writing.html" rel="alternate" type="text/html" title="Thesis Writing" /><published>2025-05-10T00:00:00+00:00</published><updated>2025-05-10T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/10/thesis-writing</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/10/thesis-writing.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-10,22:17</p>
</blockquote>

<h2 id="论文写作注意事项">论文写作注意事项</h2>]]></content><author><name>Ector Wang</name></author><category term="Writing" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-10,22:17 论文写作注意事项]]></summary></entry><entry><title type="html">Zotero 使用说明</title><link href="https://ectorwang.github.io//2025/05/08/Zotero.html" rel="alternate" type="text/html" title="Zotero 使用说明" /><published>2025-05-08T00:00:00+00:00</published><updated>2025-05-08T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/08/Zotero</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/08/Zotero.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-08,22:47</p>
</blockquote>

<h2 id="easier-citation--引用文献插件">Easier Citation — 引用文献插件</h2>

<blockquote>
  <p>[!note] 插件安装</p>
  <ol>
    <li>在插件市场安装(github: Zotero Ciation， 7版本改名了)</li>
  </ol>
</blockquote>

<blockquote>
  <p>[!note] 插入文献使用</p>

  <ol>
    <li>word - (Zoter) <strong>Add/Edit Citation</strong></li>
    <li>在 Zotero 中查询标题进行引用</li>
    <li>引用完成之后出现一个上标</li>
  </ol>

  <font color="red">添加参考文献目录</font>
  <ol>
    <li>点击word 中的 第三个图标 - <strong>Add/Edit Bibliography</strong></li>
  </ol>

  <font color="red">更新引用参考文献的格式</font>
  <ol>
    <li>点击 <strong>Document Preferences</strong></li>
    <li>选择需要的参考文献的格式</li>
  </ol>

  <font color="red">增删参考文献</font>
  <ol>
    <li>直接删除参考文献的上标</li>
    <li>添加是同样的</li>
    <li>这一步一定要做 点击 word 中的 <strong>Refresh</strong></li>
  </ol>
</blockquote>

<blockquote>
  <p>[!note] 插入使用技巧</p>
  <ol>
    <li>停留插入 word 参考文献的光标处</li>
    <li>进入“Zotero” — ”Ctrl + P“ — 点击“引用”</li>
    <li>快捷键 - <strong>键盘上的双引号</strong></li>
  </ol>
</blockquote>

<blockquote>
  <ol>
    <li>在同一位置引用三篇及以上会变为 “2-4”这样的图标，自动折叠</li>
    <li>引用过后会生成一个临时文件夹包含所有引用的文献，关闭Zotero 之后就会删掉临时文件夹</li>
    <li>如果出现了 Ctrl + P <font color="red">没有“引用”</font>，那么用原始的方法引用一篇文献之后就会出现了。</li>
  </ol>
</blockquote>

<p>添加参考文献样式的网站
https://editor.citationstyles.org/about/</p>

<blockquote>
  <p>[!info] 添加参考文献样式</p>
  <ol>
    <li>网站可以搜索样式直接下载</li>
    <li>自己也可以进行修改样式</li>
    <li>将 Zotero 中的样式导出</li>
    <li>在 editor.citationstyles 网站中的 <strong>Visual editor</strong> 模块直接删除或者添加</li>
    <li>将修改之后的导出，在Zotero 中导入</li>
  </ol>
</blockquote>]]></content><author><name>Ector Wang</name></author><category term="TeXt" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-08,22:47 Easier Citation — 引用文献插件 [!note] 插件安装 在插件市场安装(github: Zotero Ciation， 7版本改名了) [!note] 插入文献使用 word - (Zoter) Add/Edit Citation 在 Zotero 中查询标题进行引用 引用完成之后出现一个上标 添加参考文献目录 点击word 中的 第三个图标 - Add/Edit Bibliography 更新引用参考文献的格式 点击 Document Preferences 选择需要的参考文献的格式 增删参考文献 直接删除参考文献的上标 添加是同样的 这一步一定要做 点击 word 中的 Refresh [!note] 插入使用技巧 停留插入 word 参考文献的光标处 进入“Zotero” — ”Ctrl + P“ — 点击“引用” 快捷键 - 键盘上的双引号 在同一位置引用三篇及以上会变为 “2-4”这样的图标，自动折叠 引用过后会生成一个临时文件夹包含所有引用的文献，关闭Zotero 之后就会删掉临时文件夹 如果出现了 Ctrl + P 没有“引用”，那么用原始的方法引用一篇文献之后就会出现了。 添加参考文献样式的网站 https://editor.citationstyles.org/about/ [!info] 添加参考文献样式 网站可以搜索样式直接下载 自己也可以进行修改样式 将 Zotero 中的样式导出 在 editor.citationstyles 网站中的 Visual editor 模块直接删除或者添加 将修改之后的导出，在Zotero 中导入]]></summary></entry><entry><title type="html">PINNs-Burgers-2D</title><link href="https://ectorwang.github.io//2025/05/07/PINNs-Burgers-2D.html" rel="alternate" type="text/html" title="PINNs-Burgers-2D" /><published>2025-05-07T00:00:00+00:00</published><updated>2025-05-07T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/07/PINNs-Burgers-2D</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/07/PINNs-Burgers-2D.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-07,16:42</p>
</blockquote>

<h2 id="二维-burgers-equation-代码">二维 Burgers Equation 代码</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="n">sns</span>

<span class="n">nt</span> <span class="o">=</span> <span class="mi">500</span>
<span class="n">nx</span> <span class="o">=</span> <span class="mi">51</span>
<span class="n">ny</span> <span class="o">=</span> <span class="mi">51</span>

<span class="n">nu</span> <span class="o">=</span> <span class="mf">0.1</span>
<span class="n">dt</span> <span class="o">=</span> <span class="mf">0.001</span>

<span class="n">dx</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="n">nx</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">dy</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="n">ny</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>

<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">nx</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">ny</span><span class="p">)</span>

<span class="n">comb</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">u</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">v</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">un</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">vn</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">uf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">vf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">u</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">v</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">uf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">vf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">u</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">v</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>

<span class="n">uf</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">vf</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>

<span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">u</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"u solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"u scale"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">v</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"v solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"v scale"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">nt</span><span class="p">):</span>
    <span class="n">un</span> <span class="o">=</span> <span class="n">u</span><span class="p">.</span><span class="n">copy</span><span class="p">()</span>
    <span class="n">vn</span> <span class="o">=</span> <span class="n">v</span><span class="p">.</span><span class="n">copy</span><span class="p">()</span>
    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">nx</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ny</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
            <span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span>
            <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span>
            <span class="n">uf</span><span class="p">[</span><span class="n">n</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span>
            <span class="n">vf</span><span class="p">[</span><span class="n">n</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span>

    <span class="n">u</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">u</span><span class="p">[:,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">u</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">u</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[:,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>

<span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">u</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"u solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"u scale"</span><span class="p">)</span>

<span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">v</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"v solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="n">u</span> <span class="o">=</span> <span class="n">uf</span><span class="p">[</span><span class="mi">499</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">u</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"u solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"u scale"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>
</code></pre></div></div>

<h2 id="二维的burgers-equation">二维的Burgers Equation</h2>

<blockquote>
  <p>[!info] Burgers 方程
方程分为 X Y 两个方向的方程：计算的时候就要考虑两个PDE 方程的满足</p>
</blockquote>

<p>Burgers’ Equation for Horizontal Velocity (u):
水平速度$u$的伯格斯方程：
\(\frac{\partial u}{\partial t}+u\frac{\partial u}{\partial x}+v\frac{\partial u}{\partial y}=\nu\left(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}}\right)\)
垂直速度$v$的伯格斯方程：
Burgers’ Equation for Vertical Velocity (v):
\(\frac{\partial v}{\partial t}+u\frac{\partial v}{\partial x}+v\frac{\partial v}{\partial y}=\nu\left(\frac{\partial^{2}v}{\partial x^{2}}+\frac{\partial^{2}v}{\partial y^{2}}\right)\)
<strong>参数说明</strong>：</p>

<ul>
  <li>
    <p>$u$：水平速度分量</p>
  </li>
  <li>
    <p>$v$：垂直速度分量</p>
  </li>
  <li>
    <p>$t$：时间</p>
  </li>
  <li>
    <p>$x$、$y$：空间坐标</p>
  </li>
  <li>
    <p>$\nu$ ：运动粘度，反映流体粘性和扩散性质 。</p>
  </li>
</ul>

<h2 id="burgers-equation的简要介绍">Burgers Equation的简要介绍</h2>
<p>二维空间中描述流体运动的 Burgers 方程，分别为水平速度 $u$ 和垂直速度 $v$ 的方程：</p>

<ul>
  <li>
    <p><strong>水平速度</strong> $u$ <strong>的 Burgers 方程</strong>：
\(\frac{\partial u}{\partial t}+ u\frac{\partial u}{\partial x}+v\frac{\partial u}{\partial y}=\nu(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})\)</p>
  </li>
  <li>
    <p><strong>垂直速度</strong> $v$ <strong>的 Burgers 方程</strong>：
\(\frac{\partial v}{\partial t}+ u\frac{\partial v}{\partial x}+v\frac{\partial v}{\partial y}=\nu(\frac{\partial^{2}v}{\partial x^{2}}+\frac{\partial^{2}v}{\partial y^{2}})\)</p>
  </li>
</ul>

<h3 id="公式中参数的物理含义">公式中参数的物理含义</h3>

<ul>
  <li>
    <p>$u$ <strong>和</strong> $v$</p>
  </li>
  <li>
    <p>$u$ 是流体在水平方向（通常设为 $x$ 方向）的速度分量 ；$v$ 是流体在垂直方向（通常设为 $y$ 方向）的速度分量。它们描述了流体微团在空间中不同方向上的运动快慢和方向。</p>
  </li>
  <li>
    <p>$t$：表示时间，用于描述流体运动状态随时间的变化。</p>
  </li>
  <li>
    <p>$x$ <strong>和</strong> $y$：是空间坐标，用于确定流体微团在二维平面内的位置 ，$x$ 对应水平方向坐标，$y$ 对应垂直方向坐标。</p>
  </li>
  <li>
    <p>\(\nu\)：运动粘度（kinematic viscosity），它反映了流体的粘性特性，即流体内部抵抗相对运动的能力 。运动粘度等于动力粘度 $\mu$除以流体密度 $\rho$，即 $\nu=\frac{\mu}{\rho}$ 。值越大，流体粘性越强，内摩擦力越大。</p>
  </li>
</ul>

<h3 id="公式推导过程以水平速度-u-的方程为例垂直速度-v-方程推导类似-">公式推导过程（以水平速度 $u$ 的方程为例，垂直速度 $v$ 方程推导类似 ）</h3>

<ol>
  <li><strong>质量守恒（连续性方程）与动量守恒原理基础</strong></li>
</ol>

<ul>
  <li>从流体力学基本原理出发，主要依据<font color="red">质量守恒和动量守恒定律</font>。质量守恒要求流入和流出控制体的质量流量平衡；动量守恒则是牛顿第二定律 $F = ma$ 在流体中的应用，即作用在流体微团上的合力等于微团动量的变化率。</li>
</ul>

<ol>
  <li><strong>对流项（非线性项）</strong></li>
</ol>

<ul>
  <li>$u\frac{\partial u}{\partial x}$ <strong>和</strong> \(v\frac{\partial u}{\partial y}\)：这两项称为对流项。以 $u\frac{\partial u}{\partial x}$ 为例，$\frac{\partial u}{\partial x}$ 表示水平速度 $u$ 沿 $x$ 方向的变化率，而 $u$ 是流体在 $x$ 方向的速度。该项描述了由于流体自身的运动（对流运动）导致的速度 $u$ 在 $x$ 方向上的变化。也就是流体微团在运动过程中，由于其所处位置的速度分布不均匀，而引起的速度变化。$v\frac{\partial u}{\partial y}$同理，是由于 $y$ 方向的速度 $v$ 导致的 $u$ 沿 $y$ 方向的变化。这两项体现了流体运动的非线性特征。</li>
</ul>

<ol>
  <li><strong>非定常项</strong></li>
</ol>

<ul>
  <li>$\frac{\partial u}{\partial t}$：表示水平速度 $u$ 随时间 $t$ 的变化率，即由于时间推移而导致的速度 $u$ 的变化，反映了流体运动的非定常特性，比如随时间变化的风场等情况。</li>
</ul>

<ol>
  <li><strong>扩散项（粘性项）</strong></li>
</ol>

<ul>
  <li>$\nu(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})$：这是扩散项，基于傅里叶定律（热传导类似概念）在流体粘性扩散中的应用。$\frac{\partial^{2}u}{\partial x^{2}}$ 和 $\frac{\partial^{2}u}{\partial y^{2}}$ 分别是 $u$ 沿 $x$ 和 $y$ 方向的二阶导数，反映了速度梯度的变化率。$\nu$ 是运动粘度，该项表示由于流体粘性作用，使得速度在空间上发生扩散，就像热量从高温区向低温区扩散一样，速度也会从高速度梯度区域向低速度梯度区域扩散，体现了粘性力对流体速度分布的影响 。</li>
</ul>

<p>Burgers 方程在研究粘性流体的流动，如湍流、边界层流动等方面有重要应用，同时也是研究非线性偏微分方程性质和数值解法的典型模型方程。</p>

<h3 id="粘度的测试">粘度的测试</h3>

<p>在 Burgers 方程的扩散项 $\nu(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})$ 和 $\nu(\frac{\partial^{2}v}{\partial x^{2}}+\frac{\partial^{2}v}{\partial y^{2}})$ 中，关键参数为运动粘度$\nu$，下面我将详细阐述其物理含义和计算方法。</p>

<h3 id="运动粘度nu的物理含义">运动粘度$\nu$的物理含义</h3>

<p>运动粘度$\nu$是表征流体粘性特性的一个重要物理量，反映了流体内部抵抗相对运动的能力。从微观层面理解，流体的粘性源于分子间的内聚力和分子的热运动。当流体内部存在速度差异时，即不同流层之间有相对运动，粘性会使较快流层对较慢流层产生一个拉力，较慢流层对较快流层产生一个阻力，这种内摩擦力阻碍了流体层间的相对滑动，这就是粘性力的体现。</p>

<p>运动粘度$\nu$与动力粘度$\mu$密切相关，它是动力粘度$\mu$与流体密度$\rho$的比值，即$\nu = \frac{\mu}{\rho}$。相较于动力粘度，运动粘度更侧重于反映流体在惯性力和粘性力共同作用下的运动特性。在相同的动力粘度下，密度较小的流体，其运动粘度较大，意味着在相同的外力作用下，该流体速度分布的变化相对更慢，粘性对其运动的阻碍作用相对更显著。</p>

<h3 id="运动粘度nu的计算方法">运动粘度$\nu$的计算方法</h3>

<h4 id="理论计算">理论计算</h4>

<ul>
  <li>
    <p>对于理想气体，在一定条件下可基于气体分子运动论推导运动粘度。根据气体分子运动论，理想气体的动力粘度$\mu$与气体的分子量$M$、温度$T$、分子有效直径$d$等参数有关，其理论公式为$\mu=\frac{5}{16}\sqrt{\frac{\pi k_{B}T}{\pi d^{2}}}\sqrt{\frac{M}{N_{A}}}$，其中$k_{B}$为玻尔兹曼常量，$N_{A}$为阿伏伽德罗常数 。得到动力粘度$\mu$后，结合气体密度$\rho$，通过$\nu = \frac{\mu}{\rho}$计算运动粘度。不过，该理论公式是基于理想气体假设，实际气体和液体的计算更为复杂。</p>
  </li>
  <li>
    <p>对于液体，目前尚无普适的理论计算公式，但存在一些基于经验和半经验的理论模型，如 Andrade 公式$\mu = A e^{\frac{B}{T}}$，其中$A$和$B$是与液体性质有关的常数，$T$为热力学温度，通过该公式得到动力粘度后再结合密度计算运动粘度，但这些公式的适用范围有限。</p>
  </li>
</ul>

<h4 id="实验测量">实验测量</h4>

<ul>
  <li>
    <p><strong>毛细管法</strong>：让流体在一定压力差下流过已知半径和长度的毛细管，根据泊肃叶定律$Q=\frac{\pi R^{4}\Delta P}{8\mu L}$（其中$Q$为体积流量，$R$为毛细管半径，$\Delta P$为毛细管两端的压力差，$L$为毛细管长度），测量流量$Q$等参数可计算出动力粘度$\mu$，再结合密度算出运动粘度$\nu$。</p>
  </li>
  <li>
    <p><strong>旋转法</strong>：将两个同心圆筒之间充满待测流体，内筒固定，外筒以一定角速度旋转，通过测量内筒受到的粘性力矩，结合相关公式计算动力粘度，进而得到运动粘度。该方法适用于测量不同剪切速率下的粘度，常用于非牛顿流体和高粘度流体的测量。</p>
  </li>
  <li><strong>落球法</strong>：在一个装有待测流体的垂直圆筒中，让一个光滑小球在重力作用下自由下落，根据斯托克斯定律$F = 6\pi\mu r v$（其中$F$为小球受到的粘性阻力，$r$为小球半径，$v$为小球下落的稳定速度），通过测量小球下落的速度等参数计算动力粘度，再结合密度计算运动粘度。该方法适用于测量<font color="red">低粘度流体</font>。</li>
  <li></li>
</ul>

<p>如果还想了解 Burgers 方程在特定场景的应用案例，或是对其他参数的计算感兴趣，欢迎随时和我说。</p>

<h2 id="代码解读">代码解读</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="n">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="n">plt</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="n">sns</span>  <span class="c1"># matplotlib 基础之上的升级版
</span>
<span class="n">nt</span> <span class="o">=</span> <span class="mi">500</span>   <span class="c1"># 时间划分数量
# 二维网格划分
</span><span class="n">nx</span> <span class="o">=</span> <span class="mi">51</span>
<span class="n">ny</span> <span class="o">=</span> <span class="mi">51</span>

<span class="n">nu</span> <span class="o">=</span> <span class="mf">0.1</span>   <span class="c1"># 方程参数：流体粘度系数
</span><span class="n">dt</span> <span class="o">=</span> <span class="mf">0.001</span>   <span class="c1"># 时间划分 元单元
</span>
<span class="c1"># 长度为 2 X 2 的区域网格划分的的两个方向上的单元长度
</span><span class="n">dx</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="n">nx</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">dy</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">/</span> <span class="p">(</span><span class="n">ny</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>

<span class="c1"># 关于各个网格点 x y 的坐标
</span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">nx</span><span class="p">)</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">ny</span><span class="p">)</span>

<span class="n">comb</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="c1"># 网格点处 X Y方向的位移 (nx, ny) 表示划分网格点，这里横向和纵向的位移，开始设置都是为0
</span><span class="n">u</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">v</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="c1"># un vn 表示的是网格点处的数值，后面的计算中会用到
</span><span class="n">un</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">vn</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="c1"># 这里的uf vf 表示的是整体的数据，即网格点和时间的结合的三维数据，单独的二维只是某一时刻的数据，这个就包括了整个动态的过程
</span><span class="n">uf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">vf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">u</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">v</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="n">uf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>
<span class="n">vf</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">ones</span><span class="p">((</span><span class="n">nt</span><span class="p">,</span> <span class="n">ny</span><span class="p">,</span> <span class="n">nx</span><span class="p">))</span>

<span class="c1"># 0.75 - 1.25 这里给的是在整体体系 [0, 2] 和 [0, 2] 之中坐标的范围，给了这个范围内的数据一个初值，这样方便后面的计算
</span><span class="n">u</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">v</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>

<span class="c1"># 同样的边界条件，也通过 uf vf 的周期进行分析
</span><span class="n">uf</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">vf</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="nb">int</span><span class="p">(</span><span class="mf">0.75</span> <span class="o">/</span> <span class="n">dy</span><span class="p">):</span><span class="nb">int</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="mi">5</span>

<span class="c1"># 对整体的网格点进行了确定转化为tensor 给到了需要训练中的数据组
</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="c1"># 根据上面的数据，绘制等高线图 contourf
</span><span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">u</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"u solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"u scale"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">v</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"v solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"v scale"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">nt</span><span class="p">):</span>
	<span class="c1"># 由于u v 是 numpy的数组，因此这里的 un vn 是深拷贝
</span>    <span class="c1"># 如果是python 的普通数据的话，那么这里的 un vn 就是浅拷贝了
</span>    <span class="n">un</span> <span class="o">=</span> <span class="n">u</span><span class="p">.</span><span class="n">copy</span><span class="p">()</span>
    <span class="n">vn</span> <span class="o">=</span> <span class="n">v</span><span class="p">.</span><span class="n">copy</span><span class="p">()</span>
    <span class="c1"># 对网格内的点进行更新
</span>    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">nx</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ny</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
            <span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span>
            <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span> <span class="o">+</span> <span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span>
            <span class="n">uf</span><span class="p">[</span><span class="n">n</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span>
            <span class="n">vf</span><span class="p">[</span><span class="n">n</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span>

    <span class="c1"># 下面是给定的边界条件
</span>    <span class="n">u</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>   <span class="c1"># 上边界条件
</span>    <span class="n">u</span><span class="p">[:,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>   <span class="c1"># 下边界条件
</span>    <span class="n">u</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>   <span class="c1"># 左边界条件
</span>    <span class="n">u</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>   <span class="c1"># 右边界条件
</span>    <span class="c1"># 下面的也是同上面的一样
</span>    <span class="n">v</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[:,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>
    <span class="n">v</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="p">:]</span> <span class="o">=</span> <span class="mi">1</span>

<span class="c1"># 网格点划分
</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>

<span class="c1"># 绘制 u 图形 - X方向
</span><span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">u</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"u solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"u scale"</span><span class="p">)</span>

<span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="c1"># 绘制 v 图形 - Y方向
</span><span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">v</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"v solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="n">X</span><span class="p">,</span> <span class="n">Y</span> <span class="o">=</span> <span class="n">np</span><span class="p">.</span><span class="n">meshgrid</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="c1"># 绘制 特定时间处的 u 图形 - X方向
</span><span class="n">u</span> <span class="o">=</span> <span class="n">uf</span><span class="p">[</span><span class="mi">499</span><span class="p">,</span> <span class="p">:,</span> <span class="p">:]</span>

<span class="n">plt</span><span class="p">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">contour</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">contourf</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="p">,</span> <span class="n">u</span><span class="p">[:],</span> <span class="n">cmap</span><span class="o">=</span><span class="s">'jet'</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">title</span><span class="p">(</span><span class="s">"u solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"X"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"Y"</span><span class="p">)</span>
<span class="n">colorbar</span> <span class="o">=</span> <span class="n">plt</span><span class="p">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">contour</span><span class="p">)</span>
<span class="n">colorbar</span><span class="p">.</span><span class="n">set_label</span><span class="p">(</span><span class="s">"u scale"</span><span class="p">)</span>
<span class="n">plt</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>
</code></pre></div></div>

<h2 id="关于代码中的差分公式的推导过程">关于代码中的差分公式的推导过程</h2>
<p>代码实现了 <strong>二维 Burgers 方程</strong> 的数值解法，分别计算水平速度$u$和垂直速度$v$的更新值。它基于离散化的偏微分方程，使用有限差分法（FDM）进行数值求解。</p>

<hr />

<h3 id="代码对应的方程"><strong>代码对应的方程</strong></h3>
<p>代码中的更新公式对应以下二维 Burgers 方程：</p>

<ol>
  <li>
    <p><strong>水平速度$u$的方程</strong>：
  \(\frac{\partial u}{\partial t} + u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y} = \nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)\)</p>
  </li>
  <li>
    <p><strong>垂直速度$v$的方程</strong>：
  \(\frac{\partial v}{\partial t} + u \frac{\partial v}{\partial x} + v \frac{\partial v}{\partial y} = \nu \left( \frac{\partial^2 v}{\partial x^2} + \frac{\partial^2 v}{\partial y^2} \right)\)</p>
  </li>
</ol>

<hr />

<h3 id="代码解读-1"><strong>代码解读</strong></h3>
<p>代码中，使用有限差分法对上述方程进行离散化。以下是详细的解读：</p>

<h4 id="1-时间导数项"><strong>1. 时间导数项</strong></h4>
<p>时间导数$\frac{\partial u}{\partial t}$和$\frac{\partial v}{\partial t}$被离散化为：
\(\frac{\partial u}{\partial t} \approx \frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t}\)
\(\frac{\partial v}{\partial t} \approx \frac{v^{n+1}_{i,j} - v^n_{i,j}}{\Delta t}\)
其中：
-$u^{n+1}<em>{i,j}$和$v^{n+1}</em>{i,j}$是下一时间步的值。
-$u^n_{i,j}$和$v^n_{i,j}$是当前时间步的值。</p>

<p>在代码中，时间导数的更新隐含在公式中，直接通过$u[i, j]$和$v[i, j]$的赋值完成。</p>

<hr />

<h4 id="2-对流项"><strong>2. 对流项</strong></h4>
<p>对流项$u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y}$和$u \frac{\partial v}{\partial x} + v \frac{\partial v}{\partial y}$被离散化为：
\(u \frac{\partial u}{\partial x} \approx u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x}\)
\(v \frac{\partial u}{\partial y} \approx v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y}\)
\(u \frac{\partial v}{\partial x} \approx u_{i,j} \frac{v_{i,j} - v_{i-1,j}}{\Delta x}\)
\(v \frac{\partial v}{\partial y} \approx v_{i,j} \frac{v_{i,j} - v_{i,j-1}}{\Delta y}\)</p>

<p>在代码中，这些项分别对应：</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">-</span><span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span>
<span class="o">-</span><span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</code></pre></div></div>
<p>和：</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">-</span><span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span>
<span class="o">-</span><span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</code></pre></div></div>

<hr />

<h4 id="3-粘性扩散项"><strong>3. 粘性扩散项</strong></h4>
<p>粘性扩散项$\nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)$和$\nu \left( \frac{\partial^2 v}{\partial x^2} + \frac{\partial^2 v}{\partial y^2} \right)$被离散化为：
\(\frac{\partial^2 u}{\partial x^2} \approx \frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2}\)
\(\frac{\partial^2 u}{\partial y^2} \approx \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2}\)
\(\frac{\partial^2 v}{\partial x^2} \approx \frac{v_{i+1,j} - 2v_{i,j} + v_{i-1,j}}{\Delta x^2}\)
\(\frac{\partial^2 v}{\partial y^2} \approx \frac{v_{i,j+1} - 2v_{i,j} + v_{i,j-1}}{\Delta y^2}\)</p>

<p>在代码中，这些项分别对应：</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
<span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
</code></pre></div></div>
<p>和：</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
<span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
</code></pre></div></div>

<hr />

<h4 id="4-更新公式"><strong>4. 更新公式</strong></h4>
<p>综合以上离散化，水平速度$u$和垂直速度$v$的更新公式为：
\(u^{n+1}_{i,j} = u^n_{i,j} - u^n_{i,j} \frac{\Delta t}{\Delta x} (u^n_{i,j} - u^n_{i-1,j}) - v^n_{i,j} \frac{\Delta t}{\Delta y} (u^n_{i,j} - u^n_{i,j-1}) + \nu \frac{\Delta t}{\Delta x^2} (u^n_{i+1,j} - 2u^n_{i,j} + u^n_{i-1,j}) + \nu \frac{\Delta t}{\Delta y^2} (u^n_{i,j+1} - 2u^n_{i,j} + u^n_{i,j-1})\)
\(v^{n+1}_{i,j} = v^n_{i,j} - u^n_{i,j} \frac{\Delta t}{\Delta x} (v^n_{i,j} - v^n_{i-1,j}) - v^n_{i,j} \frac{\Delta t}{\Delta y} (v^n_{i,j} - v^n_{i,j-1}) + \nu \frac{\Delta t}{\Delta x^2} (v^n_{i+1,j} - 2v^n_{i,j} + v^n_{i-1,j}) + \nu \frac{\Delta t}{\Delta y^2} (v^n_{i,j+1} - 2v^n_{i,j} + v^n_{i,j-1})\)</p>

<hr />

<h3 id="代码逻辑总结"><strong>代码逻辑总结</strong></h3>
<ol>
  <li><strong>对流项</strong>：描述流体的速度变化，依赖于当前速度$u$和$v$。</li>
  <li><strong>扩散项</strong>：描述流体的粘性扩散效应，依赖于粘性系数$\nu$。</li>
  <li><strong>时间步更新</strong>：通过有限差分法，逐步更新$u$和$v$的值。</li>
</ol>

<p>这段代码实现了二维 Burgers 方程的数值解法，模拟了流体在二维空间中的速度场演化过程。</p>

<h2 id="公式总结">公式总结</h2>

\[\frac{\partial u}{\partial t} + u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y} = \nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)\]

<p>时间导数$\frac{\partial u}{\partial t}$被离散化为：
\(\frac{\partial u}{\partial t} \approx \frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t}\)</p>

<p>对流项$u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y}$被离散化为：
\(u \frac{\partial u}{\partial x} \approx u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x}\)
\(v \frac{\partial u}{\partial y} \approx v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y}\)
在代码中，这些项分别对应：</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">-</span><span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]))</span>
<span class="o">-</span><span class="p">(</span><span class="n">vn</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="n">dy</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</code></pre></div></div>

<p>粘性扩散项$\nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)$被离散化为：
\(\frac{\partial^2 u}{\partial x^2} \approx \frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2}\)
\(\frac{\partial^2 u}{\partial y^2} \approx \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2}\)</p>

<p>在代码中，这些项分别对应：</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
<span class="p">(</span><span class="n">nu</span> <span class="o">*</span> <span class="n">dt</span> <span class="o">/</span> <span class="p">(</span><span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span> <span class="o">+</span> <span class="n">un</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
</code></pre></div></div>

\[\frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t} + u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x} + v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y} = \nu (\frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2} + \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2})\]

<p>公式按等号两边分行显示的结果：</p>

\[\frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t} + u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x} + v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y} \\ = \nu \left( \frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2} + \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2} \right)\]

<p>\(u_{i,j}^{n+1}-u_{i,j}^n+\Delta t\left(u_{i,j}\frac{u_{i,j}-u_{i-1,j}}{\Delta x}+v_{i,j}\frac{u_{i,j}-u_{i,j-1}}{\Delta y}\right)\\\)
\(=\Delta t\nu\left(\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{\Delta x^2}+\frac{u_{i,j+1}-2u_{i,j}+u_{i,j-1}}{\Delta y^2}\right)\)</p>]]></content><author><name>Ector Wang</name></author><category term="PINNs" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-07,16:42 二维 Burgers Equation 代码 import numpy as np import matplotlib.pyplot as plt import seaborn as sns nt = 500 nx = 51 ny = 51 nu = 0.1 dt = 0.001 dx = 2 / (nx - 1) dy = 2 / (ny - 1) x = np.linspace(0, 2, nx) y = np.linspace(0, 2, ny) comb = np.zeros((ny, nx)) u = np.zeros((ny, nx)) v = np.zeros((ny, nx)) un = np.zeros((ny, nx)) vn = np.zeros((ny, nx)) uf = np.zeros((nt, ny, nx)) vf = np.zeros((nt, ny, nx)) u = np.ones((ny, nx)) v = np.ones((ny, nx)) uf = np.ones((nt, ny, nx)) vf = np.ones((nt, ny, nx)) u[int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 v[int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 uf[0, int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 vf[0, int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 X, Y = np.meshgrid(x, y) plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, u[:], cmap='jet') plt.title("u solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("u scale") plt.show() plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, v[:], cmap='jet') plt.title("v solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("v scale") plt.show() for n in range(1, nt): un = u.copy() vn = v.copy() for i in range(1, nx - 1): for j in range(1, ny - 1): u[i, j] = (un[i, j] - (un[i, j] * dt / dx * (un[i, j] - un[i - 1, j])) - vn[i, j] * dt / dy * (un[i, j] - un[i, j - 1])) + (nu * dt / (dx**2)) * (un[i + 1, j] - 2 * un[i, j] + un[i - 1, j]) + (nu * dt / (dx**2)) * (un[i, j - 1] - 2 * un[i, j] + un[i, j + 1]) v[i, j] = (vn[i, j] - (un[i, j] * dt / dx * (vn[i, j] - vn[i - 1, j])) - vn[i, j] * dt / dy * (vn[i, j] - vn[i, j - 1])) + (nu * dt / (dx**2)) * (vn[i + 1, j] - 2 * vn[i, j] + vn[i - 1, j]) + (nu * dt / (dx**2)) * (vn[i, j - 1] - 2 * vn[i, j] + vn[i, j + 1]) uf[n, i, j] = u[i, j] vf[n, i, j] = v[i, j] u[:, 0] = 1 u[:, -1] = 1 u[0, :] = 1 u[-1, :] = 1 v[:, 0] = 1 v[:, -1] = 1 v[0, :] = 1 v[-1, :] = 1 X, Y = np.meshgrid(x, y) plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, u[:], cmap='jet') plt.title("u solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("u scale") X, Y = np.meshgrid(x, y) plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, v[:], cmap='jet') plt.title("v solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) plt.show() X, Y = np.meshgrid(x, y) u = uf[499, :, :] plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, u[:], cmap='jet') plt.title("u solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("u scale") plt.show() 二维的Burgers Equation [!info] Burgers 方程 方程分为 X Y 两个方向的方程：计算的时候就要考虑两个PDE 方程的满足 Burgers’ Equation for Horizontal Velocity (u): 水平速度$u$的伯格斯方程： \(\frac{\partial u}{\partial t}+u\frac{\partial u}{\partial x}+v\frac{\partial u}{\partial y}=\nu\left(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}}\right)\) 垂直速度$v$的伯格斯方程： Burgers’ Equation for Vertical Velocity (v): \(\frac{\partial v}{\partial t}+u\frac{\partial v}{\partial x}+v\frac{\partial v}{\partial y}=\nu\left(\frac{\partial^{2}v}{\partial x^{2}}+\frac{\partial^{2}v}{\partial y^{2}}\right)\) 参数说明： $u$：水平速度分量 $v$：垂直速度分量 $t$：时间 $x$、$y$：空间坐标 $\nu$ ：运动粘度，反映流体粘性和扩散性质 。 Burgers Equation的简要介绍 二维空间中描述流体运动的 Burgers 方程，分别为水平速度 $u$ 和垂直速度 $v$ 的方程： 水平速度 $u$ 的 Burgers 方程： \(\frac{\partial u}{\partial t}+ u\frac{\partial u}{\partial x}+v\frac{\partial u}{\partial y}=\nu(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})\) 垂直速度 $v$ 的 Burgers 方程： \(\frac{\partial v}{\partial t}+ u\frac{\partial v}{\partial x}+v\frac{\partial v}{\partial y}=\nu(\frac{\partial^{2}v}{\partial x^{2}}+\frac{\partial^{2}v}{\partial y^{2}})\) 公式中参数的物理含义 $u$ 和 $v$ $u$ 是流体在水平方向（通常设为 $x$ 方向）的速度分量 ；$v$ 是流体在垂直方向（通常设为 $y$ 方向）的速度分量。它们描述了流体微团在空间中不同方向上的运动快慢和方向。 $t$：表示时间，用于描述流体运动状态随时间的变化。 $x$ 和 $y$：是空间坐标，用于确定流体微团在二维平面内的位置 ，$x$ 对应水平方向坐标，$y$ 对应垂直方向坐标。 \(\nu\)：运动粘度（kinematic viscosity），它反映了流体的粘性特性，即流体内部抵抗相对运动的能力 。运动粘度等于动力粘度 $\mu$除以流体密度 $\rho$，即 $\nu=\frac{\mu}{\rho}$ 。值越大，流体粘性越强，内摩擦力越大。 公式推导过程（以水平速度 $u$ 的方程为例，垂直速度 $v$ 方程推导类似 ） 质量守恒（连续性方程）与动量守恒原理基础 从流体力学基本原理出发，主要依据质量守恒和动量守恒定律。质量守恒要求流入和流出控制体的质量流量平衡；动量守恒则是牛顿第二定律 $F = ma$ 在流体中的应用，即作用在流体微团上的合力等于微团动量的变化率。 对流项（非线性项） $u\frac{\partial u}{\partial x}$ 和 \(v\frac{\partial u}{\partial y}\)：这两项称为对流项。以 $u\frac{\partial u}{\partial x}$ 为例，$\frac{\partial u}{\partial x}$ 表示水平速度 $u$ 沿 $x$ 方向的变化率，而 $u$ 是流体在 $x$ 方向的速度。该项描述了由于流体自身的运动（对流运动）导致的速度 $u$ 在 $x$ 方向上的变化。也就是流体微团在运动过程中，由于其所处位置的速度分布不均匀，而引起的速度变化。$v\frac{\partial u}{\partial y}$同理，是由于 $y$ 方向的速度 $v$ 导致的 $u$ 沿 $y$ 方向的变化。这两项体现了流体运动的非线性特征。 非定常项 $\frac{\partial u}{\partial t}$：表示水平速度 $u$ 随时间 $t$ 的变化率，即由于时间推移而导致的速度 $u$ 的变化，反映了流体运动的非定常特性，比如随时间变化的风场等情况。 扩散项（粘性项） $\nu(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})$：这是扩散项，基于傅里叶定律（热传导类似概念）在流体粘性扩散中的应用。$\frac{\partial^{2}u}{\partial x^{2}}$ 和 $\frac{\partial^{2}u}{\partial y^{2}}$ 分别是 $u$ 沿 $x$ 和 $y$ 方向的二阶导数，反映了速度梯度的变化率。$\nu$ 是运动粘度，该项表示由于流体粘性作用，使得速度在空间上发生扩散，就像热量从高温区向低温区扩散一样，速度也会从高速度梯度区域向低速度梯度区域扩散，体现了粘性力对流体速度分布的影响 。 Burgers 方程在研究粘性流体的流动，如湍流、边界层流动等方面有重要应用，同时也是研究非线性偏微分方程性质和数值解法的典型模型方程。 粘度的测试 在 Burgers 方程的扩散项 $\nu(\frac{\partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}})$ 和 $\nu(\frac{\partial^{2}v}{\partial x^{2}}+\frac{\partial^{2}v}{\partial y^{2}})$ 中，关键参数为运动粘度$\nu$，下面我将详细阐述其物理含义和计算方法。 运动粘度$\nu$的物理含义 运动粘度$\nu$是表征流体粘性特性的一个重要物理量，反映了流体内部抵抗相对运动的能力。从微观层面理解，流体的粘性源于分子间的内聚力和分子的热运动。当流体内部存在速度差异时，即不同流层之间有相对运动，粘性会使较快流层对较慢流层产生一个拉力，较慢流层对较快流层产生一个阻力，这种内摩擦力阻碍了流体层间的相对滑动，这就是粘性力的体现。 运动粘度$\nu$与动力粘度$\mu$密切相关，它是动力粘度$\mu$与流体密度$\rho$的比值，即$\nu = \frac{\mu}{\rho}$。相较于动力粘度，运动粘度更侧重于反映流体在惯性力和粘性力共同作用下的运动特性。在相同的动力粘度下，密度较小的流体，其运动粘度较大，意味着在相同的外力作用下，该流体速度分布的变化相对更慢，粘性对其运动的阻碍作用相对更显著。 运动粘度$\nu$的计算方法 理论计算 对于理想气体，在一定条件下可基于气体分子运动论推导运动粘度。根据气体分子运动论，理想气体的动力粘度$\mu$与气体的分子量$M$、温度$T$、分子有效直径$d$等参数有关，其理论公式为$\mu=\frac{5}{16}\sqrt{\frac{\pi k_{B}T}{\pi d^{2}}}\sqrt{\frac{M}{N_{A}}}$，其中$k_{B}$为玻尔兹曼常量，$N_{A}$为阿伏伽德罗常数 。得到动力粘度$\mu$后，结合气体密度$\rho$，通过$\nu = \frac{\mu}{\rho}$计算运动粘度。不过，该理论公式是基于理想气体假设，实际气体和液体的计算更为复杂。 对于液体，目前尚无普适的理论计算公式，但存在一些基于经验和半经验的理论模型，如 Andrade 公式$\mu = A e^{\frac{B}{T}}$，其中$A$和$B$是与液体性质有关的常数，$T$为热力学温度，通过该公式得到动力粘度后再结合密度计算运动粘度，但这些公式的适用范围有限。 实验测量 毛细管法：让流体在一定压力差下流过已知半径和长度的毛细管，根据泊肃叶定律$Q=\frac{\pi R^{4}\Delta P}{8\mu L}$（其中$Q$为体积流量，$R$为毛细管半径，$\Delta P$为毛细管两端的压力差，$L$为毛细管长度），测量流量$Q$等参数可计算出动力粘度$\mu$，再结合密度算出运动粘度$\nu$。 旋转法：将两个同心圆筒之间充满待测流体，内筒固定，外筒以一定角速度旋转，通过测量内筒受到的粘性力矩，结合相关公式计算动力粘度，进而得到运动粘度。该方法适用于测量不同剪切速率下的粘度，常用于非牛顿流体和高粘度流体的测量。 落球法：在一个装有待测流体的垂直圆筒中，让一个光滑小球在重力作用下自由下落，根据斯托克斯定律$F = 6\pi\mu r v$（其中$F$为小球受到的粘性阻力，$r$为小球半径，$v$为小球下落的稳定速度），通过测量小球下落的速度等参数计算动力粘度，再结合密度计算运动粘度。该方法适用于测量低粘度流体。 如果还想了解 Burgers 方程在特定场景的应用案例，或是对其他参数的计算感兴趣，欢迎随时和我说。 代码解读 import numpy as np import matplotlib.pyplot as plt import seaborn as sns # matplotlib 基础之上的升级版 nt = 500 # 时间划分数量 # 二维网格划分 nx = 51 ny = 51 nu = 0.1 # 方程参数：流体粘度系数 dt = 0.001 # 时间划分 元单元 # 长度为 2 X 2 的区域网格划分的的两个方向上的单元长度 dx = 2 / (nx - 1) dy = 2 / (ny - 1) # 关于各个网格点 x y 的坐标 x = np.linspace(0, 2, nx) y = np.linspace(0, 2, ny) comb = np.zeros((ny, nx)) # 网格点处 X Y方向的位移 (nx, ny) 表示划分网格点，这里横向和纵向的位移，开始设置都是为0 u = np.zeros((ny, nx)) v = np.zeros((ny, nx)) # un vn 表示的是网格点处的数值，后面的计算中会用到 un = np.zeros((ny, nx)) vn = np.zeros((ny, nx)) # 这里的uf vf 表示的是整体的数据，即网格点和时间的结合的三维数据，单独的二维只是某一时刻的数据，这个就包括了整个动态的过程 uf = np.zeros((nt, ny, nx)) vf = np.zeros((nt, ny, nx)) u = np.ones((ny, nx)) v = np.ones((ny, nx)) uf = np.ones((nt, ny, nx)) vf = np.ones((nt, ny, nx)) # 0.75 - 1.25 这里给的是在整体体系 [0, 2] 和 [0, 2] 之中坐标的范围，给了这个范围内的数据一个初值，这样方便后面的计算 u[int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 v[int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 # 同样的边界条件，也通过 uf vf 的周期进行分析 uf[0, int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 vf[0, int(0.75 / dy):int(1.25 / dy + 1), int(0.75 / dy):int(1.25 / dy + 1)] = 5 # 对整体的网格点进行了确定转化为tensor 给到了需要训练中的数据组 X, Y = np.meshgrid(x, y) # 根据上面的数据，绘制等高线图 contourf plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, u[:], cmap='jet') plt.title("u solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("u scale") plt.show() plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, v[:], cmap='jet') plt.title("v solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("v scale") plt.show() for n in range(1, nt): # 由于u v 是 numpy的数组，因此这里的 un vn 是深拷贝 # 如果是python 的普通数据的话，那么这里的 un vn 就是浅拷贝了 un = u.copy() vn = v.copy() # 对网格内的点进行更新 for i in range(1, nx - 1): for j in range(1, ny - 1): u[i, j] = (un[i, j] - (un[i, j] * dt / dx * (un[i, j] - un[i - 1, j])) - vn[i, j] * dt / dy * (un[i, j] - un[i, j - 1])) + (nu * dt / (dx**2)) * (un[i + 1, j] - 2 * un[i, j] + un[i - 1, j]) + (nu * dt / (dx**2)) * (un[i, j - 1] - 2 * un[i, j] + un[i, j + 1]) v[i, j] = (vn[i, j] - (un[i, j] * dt / dx * (vn[i, j] - vn[i - 1, j])) - vn[i, j] * dt / dy * (vn[i, j] - vn[i, j - 1])) + (nu * dt / (dx**2)) * (vn[i + 1, j] - 2 * vn[i, j] + vn[i - 1, j]) + (nu * dt / (dx**2)) * (vn[i, j - 1] - 2 * vn[i, j] + vn[i, j + 1]) uf[n, i, j] = u[i, j] vf[n, i, j] = v[i, j] # 下面是给定的边界条件 u[:, 0] = 1 # 上边界条件 u[:, -1] = 1 # 下边界条件 u[0, :] = 1 # 左边界条件 u[-1, :] = 1 # 右边界条件 # 下面的也是同上面的一样 v[:, 0] = 1 v[:, -1] = 1 v[0, :] = 1 v[-1, :] = 1 # 网格点划分 X, Y = np.meshgrid(x, y) # 绘制 u 图形 - X方向 plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, u[:], cmap='jet') plt.title("u solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("u scale") X, Y = np.meshgrid(x, y) # 绘制 v 图形 - Y方向 plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, v[:], cmap='jet') plt.title("v solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) plt.show() X, Y = np.meshgrid(x, y) # 绘制 特定时间处的 u 图形 - X方向 u = uf[499, :, :] plt.figure(figsize=(8, 6)) contour = plt.contourf(X, Y, u[:], cmap='jet') plt.title("u solution") plt.xlabel("X") plt.ylabel("Y") colorbar = plt.colorbar(contour) colorbar.set_label("u scale") plt.show() 关于代码中的差分公式的推导过程 代码实现了 二维 Burgers 方程 的数值解法，分别计算水平速度$u$和垂直速度$v$的更新值。它基于离散化的偏微分方程，使用有限差分法（FDM）进行数值求解。 代码对应的方程 代码中的更新公式对应以下二维 Burgers 方程： 水平速度$u$的方程： \(\frac{\partial u}{\partial t} + u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y} = \nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)\) 垂直速度$v$的方程： \(\frac{\partial v}{\partial t} + u \frac{\partial v}{\partial x} + v \frac{\partial v}{\partial y} = \nu \left( \frac{\partial^2 v}{\partial x^2} + \frac{\partial^2 v}{\partial y^2} \right)\) 代码解读 代码中，使用有限差分法对上述方程进行离散化。以下是详细的解读： 1. 时间导数项 时间导数$\frac{\partial u}{\partial t}$和$\frac{\partial v}{\partial t}$被离散化为： \(\frac{\partial u}{\partial t} \approx \frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t}\) \(\frac{\partial v}{\partial t} \approx \frac{v^{n+1}_{i,j} - v^n_{i,j}}{\Delta t}\) 其中： -$u^{n+1}{i,j}$和$v^{n+1}{i,j}$是下一时间步的值。 -$u^n_{i,j}$和$v^n_{i,j}$是当前时间步的值。 在代码中，时间导数的更新隐含在公式中，直接通过$u[i, j]$和$v[i, j]$的赋值完成。 2. 对流项 对流项$u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y}$和$u \frac{\partial v}{\partial x} + v \frac{\partial v}{\partial y}$被离散化为： \(u \frac{\partial u}{\partial x} \approx u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x}\) \(v \frac{\partial u}{\partial y} \approx v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y}\) \(u \frac{\partial v}{\partial x} \approx u_{i,j} \frac{v_{i,j} - v_{i-1,j}}{\Delta x}\) \(v \frac{\partial v}{\partial y} \approx v_{i,j} \frac{v_{i,j} - v_{i,j-1}}{\Delta y}\) 在代码中，这些项分别对应： -(un[i, j] * dt / dx * (un[i, j] - un[i-1, j])) -(vn[i, j] * dt / dy * (un[i, j] - un[i, j-1])) 和： -(un[i, j] * dt / dx * (vn[i, j] - vn[i-1, j])) -(vn[i, j] * dt / dy * (vn[i, j] - vn[i, j-1])) 3. 粘性扩散项 粘性扩散项$\nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)$和$\nu \left( \frac{\partial^2 v}{\partial x^2} + \frac{\partial^2 v}{\partial y^2} \right)$被离散化为： \(\frac{\partial^2 u}{\partial x^2} \approx \frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2}\) \(\frac{\partial^2 u}{\partial y^2} \approx \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2}\) \(\frac{\partial^2 v}{\partial x^2} \approx \frac{v_{i+1,j} - 2v_{i,j} + v_{i-1,j}}{\Delta x^2}\) \(\frac{\partial^2 v}{\partial y^2} \approx \frac{v_{i,j+1} - 2v_{i,j} + v_{i,j-1}}{\Delta y^2}\) 在代码中，这些项分别对应： (nu * dt / (dx**2)) * (un[i+1, j] - 2 * un[i, j] + un[i-1, j]) (nu * dt / (dx**2)) * (un[i, j-1] - 2 * un[i, j] + un[i, j+1]) 和： (nu * dt / (dx**2)) * (vn[i+1, j] - 2 * vn[i, j] + vn[i-1, j]) (nu * dt / (dx**2)) * (vn[i, j-1] - 2 * vn[i, j] + vn[i, j+1]) 4. 更新公式 综合以上离散化，水平速度$u$和垂直速度$v$的更新公式为： \(u^{n+1}_{i,j} = u^n_{i,j} - u^n_{i,j} \frac{\Delta t}{\Delta x} (u^n_{i,j} - u^n_{i-1,j}) - v^n_{i,j} \frac{\Delta t}{\Delta y} (u^n_{i,j} - u^n_{i,j-1}) + \nu \frac{\Delta t}{\Delta x^2} (u^n_{i+1,j} - 2u^n_{i,j} + u^n_{i-1,j}) + \nu \frac{\Delta t}{\Delta y^2} (u^n_{i,j+1} - 2u^n_{i,j} + u^n_{i,j-1})\) \(v^{n+1}_{i,j} = v^n_{i,j} - u^n_{i,j} \frac{\Delta t}{\Delta x} (v^n_{i,j} - v^n_{i-1,j}) - v^n_{i,j} \frac{\Delta t}{\Delta y} (v^n_{i,j} - v^n_{i,j-1}) + \nu \frac{\Delta t}{\Delta x^2} (v^n_{i+1,j} - 2v^n_{i,j} + v^n_{i-1,j}) + \nu \frac{\Delta t}{\Delta y^2} (v^n_{i,j+1} - 2v^n_{i,j} + v^n_{i,j-1})\) 代码逻辑总结 对流项：描述流体的速度变化，依赖于当前速度$u$和$v$。 扩散项：描述流体的粘性扩散效应，依赖于粘性系数$\nu$。 时间步更新：通过有限差分法，逐步更新$u$和$v$的值。 这段代码实现了二维 Burgers 方程的数值解法，模拟了流体在二维空间中的速度场演化过程。 公式总结 \[\frac{\partial u}{\partial t} + u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y} = \nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)\] 时间导数$\frac{\partial u}{\partial t}$被离散化为： \(\frac{\partial u}{\partial t} \approx \frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t}\) 对流项$u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y}$被离散化为： \(u \frac{\partial u}{\partial x} \approx u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x}\) \(v \frac{\partial u}{\partial y} \approx v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y}\) 在代码中，这些项分别对应： -(un[i, j] * dt / dx * (un[i, j] - un[i-1, j])) -(vn[i, j] * dt / dy * (un[i, j] - un[i, j-1])) 粘性扩散项$\nu \left( \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} \right)$被离散化为： \(\frac{\partial^2 u}{\partial x^2} \approx \frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2}\) \(\frac{\partial^2 u}{\partial y^2} \approx \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2}\) 在代码中，这些项分别对应： (nu * dt / (dx**2)) * (un[i+1, j] - 2 * un[i, j] + un[i-1, j]) (nu * dt / (dx**2)) * (un[i, j-1] - 2 * un[i, j] + un[i, j+1]) \[\frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t} + u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x} + v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y} = \nu (\frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2} + \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2})\] 公式按等号两边分行显示的结果： \[\frac{u^{n+1}_{i,j} - u^n_{i,j}}{\Delta t} + u_{i,j} \frac{u_{i,j} - u_{i-1,j}}{\Delta x} + v_{i,j} \frac{u_{i,j} - u_{i,j-1}}{\Delta y} \\ = \nu \left( \frac{u_{i+1,j} - 2u_{i,j} + u_{i-1,j}}{\Delta x^2} + \frac{u_{i,j+1} - 2u_{i,j} + u_{i,j-1}}{\Delta y^2} \right)\] \(u_{i,j}^{n+1}-u_{i,j}^n+\Delta t\left(u_{i,j}\frac{u_{i,j}-u_{i-1,j}}{\Delta x}+v_{i,j}\frac{u_{i,j}-u_{i,j-1}}{\Delta y}\right)\\\) \(=\Delta t\nu\left(\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{\Delta x^2}+\frac{u_{i,j+1}-2u_{i,j}+u_{i,j-1}}{\Delta y^2}\right)\)]]></summary></entry><entry><title type="html">Github-Blog tutorials</title><link href="https://ectorwang.github.io//2025/05/06/Github-Blog-tutorials.html" rel="alternate" type="text/html" title="Github-Blog tutorials" /><published>2025-05-06T00:00:00+00:00</published><updated>2025-05-06T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/06/Github-Blog%20tutorials</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/06/Github-Blog-tutorials.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-06,15:53</p>
</blockquote>

<blockquote>
  <p>[!info] 提交任务</p>
  <ol>
    <li>进入相关项目的文件夹目录底下（拖拽文件夹到终端）</li>
    <li>检查是否连接成功 <code class="language-plaintext highlighter-rouge">ssh -T git@github.com</code></li>
    <li>显示远程仓库地址：<code class="language-plaintext highlighter-rouge">git remote -v</code></li>
    <li>上传文件：<code class="language-plaintext highlighter-rouge">git add . / git add xxx.md</code></li>
    <li>说明更换版本<code class="language-plaintext highlighter-rouge">git commit -m “版本说明文字”</code></li>
    <li>提交文件 <code class="language-plaintext highlighter-rouge">git push</code></li>
  </ol>
</blockquote>

<h2 id="github-检测连接">Github 检测连接</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <span class="nt">-T</span> git@github.com
git remote <span class="nt">-v</span>
</code></pre></div></div>

<h2 id="修改文件提交任务">修改文件提交任务</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git add <span class="nb">.</span> / git add xxx.md
git commit <span class="nt">-m</span> “版本说明文字”
git push
</code></pre></div></div>

<ul>
  <li>直接 <code class="language-plaintext highlighter-rouge">git add .</code> 全部提交上去，其实github 会自动检查哪些文件修改了，最终只会提交修改了的文件。</li>
</ul>]]></content><author><name>Ector Wang</name></author><category term="GitHub" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-06,15:53 [!info] 提交任务 进入相关项目的文件夹目录底下（拖拽文件夹到终端） 检查是否连接成功 ssh -T git@github.com 显示远程仓库地址：git remote -v 上传文件：git add . / git add xxx.md 说明更换版本git commit -m “版本说明文字” 提交文件 git push Github 检测连接 ssh -T git@github.com git remote -v 修改文件提交任务 git add . / git add xxx.md git commit -m “版本说明文字” git push 直接 git add . 全部提交上去，其实github 会自动检查哪些文件修改了，最终只会提交修改了的文件。]]></summary></entry><entry><title type="html">PINNs-1D-Heat-Equation</title><link href="https://ectorwang.github.io//2025/05/06/PINNs-1D-Heat-Equation.html" rel="alternate" type="text/html" title="PINNs-1D-Heat-Equation" /><published>2025-05-06T00:00:00+00:00</published><updated>2025-05-06T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/06/PINNs-1D-Heat-Equation</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/06/PINNs-1D-Heat-Equation.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-06,15:38</p>
</blockquote>

<h2 id="一维热传导方程代码">一维热传导方程代码</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">numpy</span>
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span>

<span class="n">length</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">k</span> <span class="o">=</span> <span class="mf">0.89</span>
<span class="n">temp_left</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">temp_right</span> <span class="o">=</span> <span class="mi">200</span>
<span class="n">total_sim_time</span> <span class="o">=</span> <span class="mi">10</span>

<span class="n">dx</span> <span class="o">=</span> <span class="mf">0.1</span>
<span class="n">x_vector</span> <span class="o">=</span> <span class="n">numpy</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">length</span> <span class="o">/</span> <span class="n">dx</span><span class="p">))</span>

<span class="n">dt</span> <span class="o">=</span> <span class="mf">0.0001</span>
<span class="n">t_vector</span> <span class="o">=</span> <span class="n">numpy</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">total_sim_time</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">total_sim_time</span> <span class="o">/</span> <span class="n">dt</span><span class="p">))</span>

<span class="n">u</span> <span class="o">=</span> <span class="n">numpy</span><span class="p">.</span><span class="n">zeros</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">t_vector</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_vector</span><span class="p">)])</span>

<span class="n">u</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">u</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">temp_left</span>
<span class="n">u</span><span class="p">[:,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">temp_right</span>

<span class="n">pyplot</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_vector</span><span class="p">,</span> <span class="n">u</span><span class="p">[</span><span class="mi">100</span><span class="p">])</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"temp"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"x"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">t_vector</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_vector</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
        <span class="n">u</span><span class="p">[</span><span class="n">t</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">k</span> <span class="o">*</span> <span class="p">(</span><span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span><span class="p">]</span> <span class="o">+</span> <span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span><span class="p">]</span>

<span class="n">pyplot</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_vector</span><span class="p">,</span> <span class="n">u</span><span class="p">[</span><span class="mi">90000</span><span class="p">])</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"temp"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"x"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="n">pyplot</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_vector</span><span class="p">,</span> <span class="n">u</span><span class="p">[</span><span class="mi">99999</span><span class="p">])</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"temp"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"x"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>
</code></pre></div></div>

<h2 id="有限差分的思想">有限差分的思想</h2>
<p>偏微分方程采用的有限差分法，这也就是我们常说的数值解。数值解不是分析性的，也不是使用相关的数学定律得到的结果。因此关于本章的相关内容需要了解如何去解偏微分方程。</p>

<p>热传导方程是一个偏微分方程，它描述了物理系统的温度随时间的变化情况。该方程通常写作：
\(\frac{\partial u}{\partial t} = k\frac{\partial^{2} u}{\partial x^{2}},\)
带有两个热源的热棒，两端的热源加热，最后的温度上升。其中温度随时间的变化</p>

<h3 id="热容参数">热容参数</h3>
<p>热容是一种物质的属性，用于量化其储存热能的能力。</p>

<table>
  <thead>
    <tr>
      <th>物质</th>
      <th>比热容 (C_{p,s})（焦/克·摄氏度）</th>
      <th>摩尔热容 (C_{p,m})（焦/摩尔·摄氏度）</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>空气</td>
      <td>1.012</td>
      <td>29.19</td>
    </tr>
    <tr>
      <td>铝</td>
      <td>0.89</td>
      <td>24.2</td>
    </tr>
    <tr>
      <td>氩</td>
      <td>0.5203</td>
      <td>20.786</td>
    </tr>
    <tr>
      <td>铜</td>
      <td>0.385</td>
      <td>24.47</td>
    </tr>
    <tr>
      <td>花岗岩</td>
      <td>0.790</td>
      <td>—</td>
    </tr>
    <tr>
      <td>石墨</td>
      <td>0.710</td>
      <td>8.53</td>
    </tr>
    <tr>
      <td>氦</td>
      <td>5.1932</td>
      <td>20.786</td>
    </tr>
    <tr>
      <td>铁</td>
      <td>0.450</td>
      <td>25.09</td>
    </tr>
    <tr>
      <td>铅</td>
      <td>0.129</td>
      <td>26.4</td>
    </tr>
    <tr>
      <td>锂</td>
      <td>3.58</td>
      <td>24.8</td>
    </tr>
    <tr>
      <td>汞</td>
      <td>0.14</td>
      <td>27.98</td>
    </tr>
  </tbody>
</table>

<p>数值求导是一种通过使用有限差分公式（如中心差分法 ）计算两个邻近点之间的斜率，来近似求解函数导数的方法：</p>

\[f^\prime(x) \approx \frac{f(x + h) - f(x - h)}{2h}\]

<p>其中，$f^\prime(x)$ 是点 $x$ 处的导数，$h$ 是一个小的区间，$f(x)$ 是 $x$ 处的函数值。</p>

<h3 id="数值求导方法">数值求导方法</h3>

<p>数值求导方法是利用离散数据点来近似求解函数导数的技术。常见的方法包括：</p>

<h4 id="一阶导数方法">一阶导数方法：</h4>

<ul>
  <li>向前差分：
\(f^\prime(x) \approx \frac{f(x + h) - f(x)}{h}\)</li>
  <li>向后差分：
\(f^\prime(x) \approx \frac{f(x) - f(x - h)}{h}\)</li>
  <li>中心差分：
\(f^\prime(x) \approx \frac{f(x + h) - f(x - h)}{2h}\)
    <h4 id="二阶导数方法">二阶导数方法：</h4>
  </li>
  <li>三点中心差分：</li>
</ul>

\[f^{\prime\prime}(x) \approx \frac{\frac{f(x + h) - f(x)}{h}-\frac{f(x) - f(x - h)}{h}}{h}\]

<p>\(f^{\prime\prime}(x) \approx \frac{f(x + h) - 2f(x) + f(x - h)}{h^2}\)</p>
<ul>
  <li>五点模板：
\(f^{\prime\prime}(x) \approx \frac{f(x + 2h) - 4f(x + h) + 6f(x) - 4f(x - h) + f(x - 2h)}{h^2}\)</li>
</ul>

<p>三点中心差分和五点中心差分的区别？各有什么优缺点？</p>

<h3 id="方程离散化-equation-discretization">方程离散化 Equation discretization</h3>

<p>方程离散化是将连续的数学方程转化为适合数值分析的离散形式的过程。</p>

<p>这一过程在解决众多科学和工程问题中至关重要，包括求解偏微分方程、模拟物理系统以及进行数值模拟等。</p>

<p>主要公式如下：</p>

<ul>
  <li>
    <p>偏微分方程：
\(\frac{\partial u}{\partial t} = k\frac{\partial u^{2}}{\partial x^{2}}\)</p>
  </li>
  <li>
    <p>二阶导数近似公式：
\(f^{\prime\prime}(x) \approx \frac{f(x + h) - 2f(x) + f(x - h)}{h^{2}}\)</p>
  </li>
  <li>
    <p>一阶导数近似公式：
\(f^{\prime}(x) \approx \frac{f(x + h) - f(x)}{h}\)</p>
  </li>
  <li>离散化后的方程：
\(\frac{u(t + dt, x) - u(t, x)}{dt} = k\frac{u(t, x + dx) - 2u(t, x) + u(t, x - dx)}{dx^{2}}\)</li>
  <li>方便编程采用的方程-下面代码中的方程
\(u(t+dt,x)=dt\cdot\left(\frac{k}{dx^2}\right)\left(u(t,x+dx\right)-2u(t,x)+u\left(t,x-dx)\right)-u(t,x)\)</li>
</ul>

<h2 id="代码讲解">代码讲解</h2>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">numpy</span>
<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span>

<span class="n">length</span> <span class="o">=</span> <span class="mi">10</span>  <span class="c1"># 杆的长度
</span><span class="n">k</span> <span class="o">=</span> <span class="mf">0.89</span>     <span class="c1"># 铝的热容参数
</span><span class="n">temp_left</span> <span class="o">=</span> <span class="mi">100</span>     <span class="c1"># 左端热源温度
</span><span class="n">temp_right</span> <span class="o">=</span> <span class="mi">200</span>     <span class="c1"># 右端热源温度
</span><span class="n">total_sim_time</span> <span class="o">=</span> <span class="mi">10</span>     <span class="c1"># 总体时间
</span>
<span class="n">dx</span> <span class="o">=</span> <span class="mf">0.1</span>     <span class="c1"># meshgrid 元单元
</span><span class="n">x_vector</span> <span class="o">=</span> <span class="n">numpy</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">length</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">length</span> <span class="o">/</span> <span class="n">dx</span><span class="p">))</span>     <span class="c1"># 一维杆的网格划分点
</span>
<span class="n">dt</span> <span class="o">=</span> <span class="mf">0.0001</span>     <span class="c1"># 拟合元单元时间
</span><span class="n">t_vector</span> <span class="o">=</span> <span class="n">numpy</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">total_sim_time</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">total_sim_time</span> <span class="o">/</span> <span class="n">dt</span><span class="p">))</span>

<span class="n">u</span> <span class="o">=</span> <span class="n">numpy</span><span class="p">.</span><span class="n">zeros</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="n">t_vector</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_vector</span><span class="p">)])</span>     <span class="c1"># 所有数据的维度，每一行表示某个时候杆上各点的温度
</span>
<span class="c1"># 热源边界条件确定
</span><span class="n">u</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">u</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">temp_left</span>
<span class="n">u</span><span class="p">[:,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">temp_right</span>

<span class="c1"># 绘制 u[100] 这个时刻的杆上各点的温度线图
</span><span class="n">pyplot</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_vector</span><span class="p">,</span> <span class="n">u</span><span class="p">[</span><span class="mi">100</span><span class="p">])</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"temp"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"x"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># 根据有限元的思想计算各点的数值
# 上面的介绍中有讲这一步具体怎么去做的
</span><span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">t_vector</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
    <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_vector</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
        <span class="n">u</span><span class="p">[</span><span class="n">t</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="n">k</span> <span class="o">*</span> <span class="p">(</span><span class="n">dt</span> <span class="o">/</span> <span class="n">dx</span><span class="o">**</span><span class="mi">2</span><span class="p">))</span> <span class="o">*</span> <span class="p">(</span><span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span><span class="p">]</span> <span class="o">+</span> <span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]))</span> <span class="o">+</span> <span class="n">u</span><span class="p">[</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span><span class="p">]</span>

<span class="c1"># 绘制通过数值计算-有限差分的概念 计算之后的图形绘制
</span><span class="n">pyplot</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_vector</span><span class="p">,</span> <span class="n">u</span><span class="p">[</span><span class="mi">90000</span><span class="p">])</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"temp"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"x"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>

<span class="n">pyplot</span><span class="p">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x_vector</span><span class="p">,</span> <span class="n">u</span><span class="p">[</span><span class="mi">99999</span><span class="p">])</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s">"temp"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s">"x"</span><span class="p">)</span>
<span class="n">pyplot</span><span class="p">.</span><span class="n">show</span><span class="p">()</span>
</code></pre></div></div>

<h2 id="一维热传导方程的推导简要介绍">一维热传导方程的推导简要介绍</h2>
<h3 id="一一维热传导方程介绍">一、一维热传导方程介绍</h3>

<p>一维热传导方程是描述热量在一维物体（如细长杆）中传递规律的数学方程 。通过它可了解物体内部温度分布，以及温度随时间和空间的变化情况。在工程和科学领域，如材料热性能分析、设备散热设计等方面有广泛应用 。其偏微分方程形式为：
\(\frac{\partial u}{\partial t} = k\frac{\partial^{2}u}{\partial x^{2}}\)
其中，$u = u(x, t)$表示温度，是关于空间坐标$x$和时间$t$的函数 ；$k$为热扩散率（也叫热扩散系数） 。热扩散率$k = \frac{\lambda}{\rho c_p}$ ，这里$\lambda$是导热系数（反映材料传导热量的能力，单位$W/(mÂ·K)$ ），$\rho$是材料密度（单位$kg/m^3$ ），$c_p$是比热容（单位质量物质温度升高$1K$所需热量，单位$J/(kgÂ·K)$ ） 。</p>

<h3 id="二方程推导过程">二、方程推导过程</h3>

<ol>
  <li><strong>基本假设</strong></li>
</ol>

<ul>
  <li>
    <p>考虑一根均匀的一维物体（如金属棒），其横截面积$A$恒定不变 。</p>
  </li>
  <li>
    <p>物体的热传导系数$\lambda$已知且保持恒定 。</p>
  </li>
  <li>
    <p>只考虑沿物体长度方向$x$方向）的热传导，忽略其他方向（如径向等）的热传导 。</p>
  </li>
</ul>

<ol>
  <li><strong>涉及的物理定律和概念</strong></li>
</ol>

<ul>
  <li>
    <p><strong>能量守恒定律</strong>：在一个封闭系统中，能量不会凭空产生或消失，只会从一种形式转化为另一种形式。在热传导情境下，流入某部分物体的热量减去流出的热量，等于该部分物体热存储（即温度变化引起的内能变化） 。</p>
  </li>
  <li><strong>热流量（热流密度）</strong>：单位时间内通过单位面积的热量，用$q$表示 ，根据傅里叶定律，$q = -\lambda\frac{\partial u}{\partial x}$ 。负号表示热量总是从高温区域流向低温区域，$rac{\partial u}{\partial x}$是温度关于位置 $x$ 的梯度 。
$
    <ol>
      <li><strong>推导步骤</strong></li>
    </ol>
  </li>
  <li>
    <p>取物体中一个微小的长度元$\Delta x$，在微小时间间隔$\Delta t$内，分析该微元段的能量变化 。</p>
  </li>
  <li>
    <p><strong>流入与流出热量</strong>：</p>
  </li>
  <li>
    <p>从左侧（$x$处）流入微元段的热流量为$q(x,t)A\Delta t$ ，由傅里叶定律$q(x,t)=-\lambda\frac{\partial u(x,t)}{\partial x}$，所以流入热量$Q_{in}=-\lambda A\Delta t\frac{\partial u(x,t)}{\partial x}$ 。</p>
  </li>
  <li>
    <p>从右侧（$x + \Delta x$处）流出微元段的热流量为$q(x + \Delta x,t)A\Delta t$ ，即$Q_{out}=-\lambda A\Delta t\frac{\partial u(x + \Delta x,t)}{\partial x}$ 。</p>
  </li>
  <li>
    <p><strong>微元段热存储变化</strong>：微元段的质量$m=\rho A\Delta x$ ，根据比热容定义，温度变化$\Delta u$时，内能变化（热存储变化）$\Delta Q = m c_p\Delta u=\rho A\Delta x c_p\frac{\partial u}{\partial t}\Delta t$ 。</p>
  </li>
  <li><strong>根据能量守恒定律建立等式</strong>：</li>
</ul>

<p>流入热量减去流出热量等于微元段热存储变化，即$Q_{in}-Q_{out}=\Delta Q$ 。</p>

\[-\lambda A\Delta t\frac{\partial u(x,t)}{\partial x}-\left(-\lambda A\Delta t\frac{\partial u(x + \Delta x,t)}{\partial x}\right)=\rho A\Delta x c_p\frac{\partial u}{\partial t}\Delta t)\]

<ul>
  <li><strong>化简等式</strong>：</li>
</ul>

<p>两边同时除以$A\Delta x\Delta t$ ，得到</p>

\[\frac{\lambda}{\rho c_p}\frac{\frac{\partial u(x + \Delta x,t)}{\partial x}-\frac{\partial u(x,t)}{\partial x}}{\Delta x}=\frac{\partial u}{\partial t}\]

<p>当$\Delta x \to 0$时，根据导数定义，
\(\frac{\frac{\partial u(x + \Delta x,t)}{\partial x}-\frac{\partial u(x,t)}{\partial x}}{\Delta x}=\frac{\partial^{2}u}{\partial x^{2}}\)
，令$k = \frac{\lambda}{\rho c_p}$（热扩散率），就得到一维热传导方程：</p>

\[\frac{\partial u}{\partial t} = k\frac{\partial^{2}u}{\partial x^{2}}\]]]></content><author><name>Ector Wang</name></author><category term="PINNs" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-06,15:38 一维热传导方程代码 import numpy from matplotlib import pyplot length = 10 k = 0.89 temp_left = 100 temp_right = 200 total_sim_time = 10 dx = 0.1 x_vector = numpy.linspace(0, length, int(length / dx)) dt = 0.0001 t_vector = numpy.linspace(0, total_sim_time, int(total_sim_time / dt)) u = numpy.zeros([len(t_vector), len(x_vector)]) u[0, 0] = 100 u[:, 0] = temp_left u[:, -1] = temp_right pyplot.plot(x_vector, u[100]) pyplot.ylabel("temp") pyplot.xlabel("x") pyplot.show() for t in range(1, len(t_vector) - 1): for x in range(1, len(x_vector) - 1): u[t + 1, x] = ((k * (dt / dx**2)) * (u[t, x + 1] - 2 * u[t, x] + u[t, x - 1])) + u[t, x] pyplot.plot(x_vector, u[90000]) pyplot.ylabel("temp") pyplot.xlabel("x") pyplot.show() pyplot.plot(x_vector, u[99999]) pyplot.ylabel("temp") pyplot.xlabel("x") pyplot.show() 有限差分的思想 偏微分方程采用的有限差分法，这也就是我们常说的数值解。数值解不是分析性的，也不是使用相关的数学定律得到的结果。因此关于本章的相关内容需要了解如何去解偏微分方程。 热传导方程是一个偏微分方程，它描述了物理系统的温度随时间的变化情况。该方程通常写作： \(\frac{\partial u}{\partial t} = k\frac{\partial^{2} u}{\partial x^{2}},\) 带有两个热源的热棒，两端的热源加热，最后的温度上升。其中温度随时间的变化 热容参数 热容是一种物质的属性，用于量化其储存热能的能力。 物质 比热容 (C_{p,s})（焦/克·摄氏度） 摩尔热容 (C_{p,m})（焦/摩尔·摄氏度） 空气 1.012 29.19 铝 0.89 24.2 氩 0.5203 20.786 铜 0.385 24.47 花岗岩 0.790 — 石墨 0.710 8.53 氦 5.1932 20.786 铁 0.450 25.09 铅 0.129 26.4 锂 3.58 24.8 汞 0.14 27.98 数值求导是一种通过使用有限差分公式（如中心差分法 ）计算两个邻近点之间的斜率，来近似求解函数导数的方法： \[f^\prime(x) \approx \frac{f(x + h) - f(x - h)}{2h}\] 其中，$f^\prime(x)$ 是点 $x$ 处的导数，$h$ 是一个小的区间，$f(x)$ 是 $x$ 处的函数值。 数值求导方法 数值求导方法是利用离散数据点来近似求解函数导数的技术。常见的方法包括： 一阶导数方法： 向前差分： \(f^\prime(x) \approx \frac{f(x + h) - f(x)}{h}\) 向后差分： \(f^\prime(x) \approx \frac{f(x) - f(x - h)}{h}\) 中心差分： \(f^\prime(x) \approx \frac{f(x + h) - f(x - h)}{2h}\) 二阶导数方法： 三点中心差分： \[f^{\prime\prime}(x) \approx \frac{\frac{f(x + h) - f(x)}{h}-\frac{f(x) - f(x - h)}{h}}{h}\] \(f^{\prime\prime}(x) \approx \frac{f(x + h) - 2f(x) + f(x - h)}{h^2}\) 五点模板： \(f^{\prime\prime}(x) \approx \frac{f(x + 2h) - 4f(x + h) + 6f(x) - 4f(x - h) + f(x - 2h)}{h^2}\) 三点中心差分和五点中心差分的区别？各有什么优缺点？ 方程离散化 Equation discretization 方程离散化是将连续的数学方程转化为适合数值分析的离散形式的过程。 这一过程在解决众多科学和工程问题中至关重要，包括求解偏微分方程、模拟物理系统以及进行数值模拟等。 主要公式如下： 偏微分方程： \(\frac{\partial u}{\partial t} = k\frac{\partial u^{2}}{\partial x^{2}}\) 二阶导数近似公式： \(f^{\prime\prime}(x) \approx \frac{f(x + h) - 2f(x) + f(x - h)}{h^{2}}\) 一阶导数近似公式： \(f^{\prime}(x) \approx \frac{f(x + h) - f(x)}{h}\) 离散化后的方程： \(\frac{u(t + dt, x) - u(t, x)}{dt} = k\frac{u(t, x + dx) - 2u(t, x) + u(t, x - dx)}{dx^{2}}\) 方便编程采用的方程-下面代码中的方程 \(u(t+dt,x)=dt\cdot\left(\frac{k}{dx^2}\right)\left(u(t,x+dx\right)-2u(t,x)+u\left(t,x-dx)\right)-u(t,x)\) 代码讲解 import numpy from matplotlib import pyplot length = 10 # 杆的长度 k = 0.89 # 铝的热容参数 temp_left = 100 # 左端热源温度 temp_right = 200 # 右端热源温度 total_sim_time = 10 # 总体时间 dx = 0.1 # meshgrid 元单元 x_vector = numpy.linspace(0, length, int(length / dx)) # 一维杆的网格划分点 dt = 0.0001 # 拟合元单元时间 t_vector = numpy.linspace(0, total_sim_time, int(total_sim_time / dt)) u = numpy.zeros([len(t_vector), len(x_vector)]) # 所有数据的维度，每一行表示某个时候杆上各点的温度 # 热源边界条件确定 u[0, 0] = 100 u[:, 0] = temp_left u[:, -1] = temp_right # 绘制 u[100] 这个时刻的杆上各点的温度线图 pyplot.plot(x_vector, u[100]) pyplot.ylabel("temp") pyplot.xlabel("x") pyplot.show() # 根据有限元的思想计算各点的数值 # 上面的介绍中有讲这一步具体怎么去做的 for t in range(1, len(t_vector) - 1): for x in range(1, len(x_vector) - 1): u[t + 1, x] = ((k * (dt / dx**2)) * (u[t, x + 1] - 2 * u[t, x] + u[t, x - 1])) + u[t, x] # 绘制通过数值计算-有限差分的概念 计算之后的图形绘制 pyplot.plot(x_vector, u[90000]) pyplot.ylabel("temp") pyplot.xlabel("x") pyplot.show() pyplot.plot(x_vector, u[99999]) pyplot.ylabel("temp") pyplot.xlabel("x") pyplot.show() 一维热传导方程的推导简要介绍 一、一维热传导方程介绍 一维热传导方程是描述热量在一维物体（如细长杆）中传递规律的数学方程 。通过它可了解物体内部温度分布，以及温度随时间和空间的变化情况。在工程和科学领域，如材料热性能分析、设备散热设计等方面有广泛应用 。其偏微分方程形式为： \(\frac{\partial u}{\partial t} = k\frac{\partial^{2}u}{\partial x^{2}}\) 其中，$u = u(x, t)$表示温度，是关于空间坐标$x$和时间$t$的函数 ；$k$为热扩散率（也叫热扩散系数） 。热扩散率$k = \frac{\lambda}{\rho c_p}$ ，这里$\lambda$是导热系数（反映材料传导热量的能力，单位$W/(mÂ·K)$ ），$\rho$是材料密度（单位$kg/m^3$ ），$c_p$是比热容（单位质量物质温度升高$1K$所需热量，单位$J/(kgÂ·K)$ ） 。 二、方程推导过程 基本假设 考虑一根均匀的一维物体（如金属棒），其横截面积$A$恒定不变 。 物体的热传导系数$\lambda$已知且保持恒定 。 只考虑沿物体长度方向$x$方向）的热传导，忽略其他方向（如径向等）的热传导 。 涉及的物理定律和概念 能量守恒定律：在一个封闭系统中，能量不会凭空产生或消失，只会从一种形式转化为另一种形式。在热传导情境下，流入某部分物体的热量减去流出的热量，等于该部分物体热存储（即温度变化引起的内能变化） 。 热流量（热流密度）：单位时间内通过单位面积的热量，用$q$表示 ，根据傅里叶定律，$q = -\lambda\frac{\partial u}{\partial x}$ 。负号表示热量总是从高温区域流向低温区域，$rac{\partial u}{\partial x}$是温度关于位置 $x$ 的梯度 。 $ 推导步骤 取物体中一个微小的长度元$\Delta x$，在微小时间间隔$\Delta t$内，分析该微元段的能量变化 。 流入与流出热量： 从左侧（$x$处）流入微元段的热流量为$q(x,t)A\Delta t$ ，由傅里叶定律$q(x,t)=-\lambda\frac{\partial u(x,t)}{\partial x}$，所以流入热量$Q_{in}=-\lambda A\Delta t\frac{\partial u(x,t)}{\partial x}$ 。 从右侧（$x + \Delta x$处）流出微元段的热流量为$q(x + \Delta x,t)A\Delta t$ ，即$Q_{out}=-\lambda A\Delta t\frac{\partial u(x + \Delta x,t)}{\partial x}$ 。 微元段热存储变化：微元段的质量$m=\rho A\Delta x$ ，根据比热容定义，温度变化$\Delta u$时，内能变化（热存储变化）$\Delta Q = m c_p\Delta u=\rho A\Delta x c_p\frac{\partial u}{\partial t}\Delta t$ 。 根据能量守恒定律建立等式： 流入热量减去流出热量等于微元段热存储变化，即$Q_{in}-Q_{out}=\Delta Q$ 。 \[-\lambda A\Delta t\frac{\partial u(x,t)}{\partial x}-\left(-\lambda A\Delta t\frac{\partial u(x + \Delta x,t)}{\partial x}\right)=\rho A\Delta x c_p\frac{\partial u}{\partial t}\Delta t)\] 化简等式： 两边同时除以$A\Delta x\Delta t$ ，得到 \[\frac{\lambda}{\rho c_p}\frac{\frac{\partial u(x + \Delta x,t)}{\partial x}-\frac{\partial u(x,t)}{\partial x}}{\Delta x}=\frac{\partial u}{\partial t}\] 当$\Delta x \to 0$时，根据导数定义， \(\frac{\frac{\partial u(x + \Delta x,t)}{\partial x}-\frac{\partial u(x,t)}{\partial x}}{\Delta x}=\frac{\partial^{2}u}{\partial x^{2}}\) ，令$k = \frac{\lambda}{\rho c_p}$（热扩散率），就得到一维热传导方程： \[\frac{\partial u}{\partial t} = k\frac{\partial^{2}u}{\partial x^{2}}\]]]></summary></entry><entry><title type="html">Mac Formula Editor Setting</title><link href="https://ectorwang.github.io//2025/05/05/word-Formula-Editor.html" rel="alternate" type="text/html" title="Mac Formula Editor Setting" /><published>2025-05-05T00:00:00+00:00</published><updated>2025-05-05T00:00:00+00:00</updated><id>https://ectorwang.github.io//2025/05/05/word-Formula-Editor</id><content type="html" xml:base="https://ectorwang.github.io//2025/05/05/word-Formula-Editor.html"><![CDATA[<blockquote>
  <p>[!info] 文件创建时间
2025-05-05,13:53</p>
</blockquote>

<h2 id="目前流行的软件">目前流行的软件</h2>
<blockquote>
  <p>[!info] 软件</p>
  <ul>
    <li>Mathtype：价格较贵，且不是买断制的</li>
    <li>Mathcapture：只支持 Mac</li>
    <li>SimpleTex：免费，对Windows 用户很好。但是没有Mac 端插件</li>
  </ul>
</blockquote>

<h2 id="simpletex---mac-中使用指南">SimpleTex - Mac 中使用指南</h2>
<blockquote>
  <p>[!info] 使用步骤</p>
  <ol>
    <li>SimpleTex 编辑公式</li>
    <li>复制 MathML(Word) 到word 文本中</li>
    <li>上述操作基本上没有什么问题
 NOTE:
 这里粘贴过去，尽量使用单行的。
 多行粘贴容易出现问题</li>
  </ol>
</blockquote>

<blockquote>
  <p>[!info] 存在一些问题</p>
  <ol>
    <li>使用 SimpleTex 的识别功能和AI功能可能需要排队</li>
    <li>这个时候可以买会员，或者使用 uTools 这个桌面软件</li>
    <li>uTools：<strong>截图 - OCR 文字识别 - 公式识别</strong></li>
  </ol>
</blockquote>

<h2 id="最终建议">最终建议</h2>
<blockquote>
  <p>要么买正版的Mathtype 要么就使用Word 自带的编辑器</p>
</blockquote>

<p>学生还是穷呀！要是有钱，也不会想这么多的方法去解决这些问题的办法</p>]]></content><author><name>Ector Wang</name></author><category term="TeXt" /><summary type="html"><![CDATA[[!info] 文件创建时间 2025-05-05,13:53 目前流行的软件 [!info] 软件 Mathtype：价格较贵，且不是买断制的 Mathcapture：只支持 Mac SimpleTex：免费，对Windows 用户很好。但是没有Mac 端插件 SimpleTex - Mac 中使用指南 [!info] 使用步骤 SimpleTex 编辑公式 复制 MathML(Word) 到word 文本中 上述操作基本上没有什么问题 NOTE: 这里粘贴过去，尽量使用单行的。 多行粘贴容易出现问题 [!info] 存在一些问题 使用 SimpleTex 的识别功能和AI功能可能需要排队 这个时候可以买会员，或者使用 uTools 这个桌面软件 uTools：截图 - OCR 文字识别 - 公式识别 最终建议 要么买正版的Mathtype 要么就使用Word 自带的编辑器 学生还是穷呀！要是有钱，也不会想这么多的方法去解决这些问题的办法]]></summary></entry><entry><title type="html">Welcome</title><link href="https://ectorwang.github.io//2018/07/01/welcome.html" rel="alternate" type="text/html" title="Welcome" /><published>2018-07-01T00:00:00+00:00</published><updated>2018-07-01T00:00:00+00:00</updated><id>https://ectorwang.github.io//2018/07/01/welcome</id><content type="html" xml:base="https://ectorwang.github.io//2018/07/01/welcome.html"><![CDATA[<h2 id="标题">标题</h2>

<p>If you see this page, that means you have setup your site. enjoy! :ghost: :ghost: :ghost:</p>

<p>You may want to <a href="https://kitian616.github.io/jekyll-TeXt-theme/docs/en/configuration">config the site</a> or <a href="https://kitian616.github.io/jekyll-TeXt-theme/docs/en/writing-posts">writing a post</a> next. Please feel free to <a href="https://github.com/kitian616/jekyll-TeXt-theme/issues">create an issue</a> or <a href="mailto:kitian616@outlook.com">send me email</a> if you have any questions.</p>

<!--more-->

<hr />

<p>If you like TeXt, don’t forget to give me a star. :star2:</p>

<p><a href="https://github.com/kitian616/jekyll-TeXt-theme/"><img src="https://img.shields.io/github/stars/kitian616/jekyll-TeXt-theme.svg?label=Stars&amp;style=social" alt="Star This Project" /></a></p>]]></content><author><name>Ector Wang</name></author><category term="TeXt" /><summary type="html"><![CDATA[标题 If you see this page, that means you have setup your site. enjoy! :ghost: :ghost: :ghost: You may want to config the site or writing a post next. Please feel free to create an issue or send me email if you have any questions.]]></summary></entry></feed>