精华内容
下载资源
问答
  • 来源:中国电脑教育报 这样一个问题:“我不知道该为...因为时候,我的服务器可能位于比较偏远的地方,没有硬件级防火墙来保护它们,这时我就完全依赖于在服务器上安装软件来保证它们的安全。 听起来,这似乎比

    来源:中国电脑教育报

      有这样一个问题:“我不知道该为Windows服务器选择什么防火墙”。事实上,人们经常就这个问题向我咨询,然而我自己也没能找到最好的答案。很多次,即便服务器处于硬件防火墙保护之内时,我仍然喜欢在服务器自身上安装额外的软件防护。因为有时候,我的服务器可能位于比较偏远的地方,没有硬件级防火墙来保护它们,这时我就得完全依赖于在服务器上安装软件来保证它们的安全。

      听起来,这似乎比较简单。然而事实上,我一直在用足够的耐心等待着有一天能够找到完美的Windows防火墙,这样我就可以不用跟那些向我咨询的人解释为什么很多时候理想的选择是部署了Iptables的Linux系统。但是我想我的等待是徒劳的,很多时候我都以为我终于找到了最好的Windows防火墙解决方案,然而那只是我又一次失望的开始。

      TCP/IP过滤器的速度的确非常快,但它的优点也仅局限于此,因为当你使用TCP/IP过滤器时,你肯定还需要添加其他层的保护。

      IPSec是不错的,当你挑选出适用的规则、过滤条款后,你可以通过图形界面或者命令行界面来设置,但是无论是图形界面还是命令行界面都容易把人搞糊涂。最后,你终于配置完成,并成功让它运行起来——这时,你将会发现网络变慢了,因为IPSec过滤“包”的时候,它本身就能让网络变慢10%~15%。在这里顺便再说说其他令我憎恨IPSec的事情:它是以Windows事件的方式来记录日志的——当你想要观看你的防火墙日志的时候,你需要点击那些事件日志,然后找出你想要的东西——这已经足够让我放弃使用它了。

      Internet Connection Firewall(ICF)在Windows Server 2003中稍微好一点,它有不错的性能,并且在规则方面有一定弹性。当Windows Server 2003 SP1来到以后,新的Windows防火墙将变得更好。Windows防火墙是个大的进步,而且它具备群组策略。不幸的是Windows防火墙不允许你针对发出端设置任何规则,此外,它还需要开启远程管理和通讯服务——这些都是我平时不需要的。

      可能有人会问RAS怎么样呢?你可能注意到,它具备包过滤功能,并且事实上它还为其他工具提供了不错的API接口以便对过滤器进行配置。但是,这些过滤器无法控制底层协议,比如ICMP,所以实际上它没多大用处。

      还有许多个人版防火墙可以非常好的运行于桌面系统,但是它们都无法达到服务器用户的需要。虽然在它们当中,某些产品明显超出同类产品的水平,但是所有个人版防火墙的共同的问题是:简单的记录工具、缓慢的执行效率,而最糟糕的是,大多数个人版防火墙在数据流通量非常大的时候都有可能造成系统蓝屏。

      个人版防火墙的这些问题源自它们与Windows的结合性上。它们通过多种途径来截取信息包,而这也造成了它们的一些缺陷。某些个人版防火墙产品涉及到拦截系统内核信息,或改写硬件驱动的问题。由于这种工作方式,你最好祈祷它们的产品是稳定的,否则将经常看到蓝屏现象,你瞧,当流通量比较大的时候我们的确经常看到系统蓝屏。

      另一个问题是,由于这些个人版防火墙的工作模式,所以它们通常会发生排斥,所以不要尝试同时在PC里安装两套个人版防火墙,服务器也是如此。否则,你可能会遇到一些问题。个人防火墙还不适合无人值守的服务器,因为大多数个人防火墙在拦截包的时候都会弹出一个对话框,让用户选择如何处理/操作。一些防火墙我还发现无法通过系统托盘图标顺利访问终端业务。

      我最后一次以为已经找到了Windows防火墙的最好解决方案是在我尝试给Windows服务器安装ISA Server 2004的时候。让我惊奇的是,它运行得非常好。它的功能非常完善,在防护范围方面跟个人版差不多,但它运行更稳定。我发现它只有一个问题:ISA Server 2004的许可授权的价格比服务器本身还要贵。这使得它很难被用户接受。

      我现在该怎么办?我觉得我如果自己花钱购买一个小型硬件级防火墙来保护我的服务器——仅仅因为我有时要离开它一小段时间——那实在是非常疯狂的事情。

      不是所有的希望都破灭了,至少,微软正在努力打造一个新的过滤平台WFP,在不久即将来到的“长角(Longhorn)”系统上。该版本的实际发布日期可能是在未来的一、两年里。WFP是一个集成包过滤技术于操作系统之内的解决方案。

      未来,第三方厂商的防火墙很可能只是简单的接入到WFP体系中,并提供配置规则的功能而已。WFP计划支持新TCP/IP协议的多个层,并且可以在通信流被解析之前就进行过滤。WFP甚至还支持IPv6。WFP听起来不错,但是它仍然无法在今天就帮助我们,它离我们还有些距离。并且,它是否有效并稳定还需要我们在实际使用中观察。

      你可能认为答案过于简单了,当然不。这些仍然让我们感到适当的惊讶。目前,Windows服务器防火墙完美的解决方案是不存在的。

    展开全文
  • 目前市面上很多免费的https证书,但为什么人们还是宁愿花钱使用收费的https证书呢?现在谁还在用免费https证书? 其实使用免费https证书是存在着一定的风险的,免费https证书存在着一定的缺陷,具体表现如下: ...

    近几年,互联网技术越来越发达了,但随之而来的网络信息泄露事件发生得也越来越频繁了。这给网站建设者们敲了一个警钟,保护网络数据安全势在必行,给网站安装https证书(即SSL证书)是大势所趋。目前市面上有很多免费的https证书,但为什么人们还是宁愿花钱使用收费的https证书呢?现在谁还在用免费https证书?

    其实使用免费https证书是存在着一定的风险的,免费https证书存在着一定的缺陷,具体表现如下:

    免费的https证书申请过程繁杂,没有专业的技术支持,全程都需要自己操作。申请人必须要有专业的知识,否则还可能申请不到。

    免费的https证书有效期短,三个月就要重新申请一次,十分麻烦。而且,到期后不提醒,用户们常常会因为证书过期而没及时续签而造成损失。

    免费的https证书只有单域名的DV型https证书,可选种类太少,不能满足用户多样化需求。

    免费的https证书没有任何权益保障,随时都有可能被无端吊销,几乎没有商业保障赔付。

    免费的https证书在一些特定的环境下会出现不兼容,严重时会影响整个网站的运营。

    因此,现在只有一小部分网站仍在使用免费https证书,这类网站大多数是不太注重网络安全的个人网站,有细心的站长朋友会发现那些可以提供免费https证书的平台自己使用的却是收费的https证书,他自己为何不使用免费https证书呢?答案不言而喻了。您还在用免费https证书吗?如果是,建议更换!

    展开全文
  • 在Next js网站中使用持久的全局状态比我想象的要艰巨多! 看我生气的 :face_with_tears_of_joy: 。 您必须对客户端和服务器端渲染以及Next js的处理方式扎实的了解! 显然,在服务器端渲染的情况下,请不要忘记...
  • 去中心化其利弊,好处是高度自由,而所谓的“缺陷”就在于不“通情达理”、“效率不高”。在现实世界中,若钱包不慎丢失,去和拾者协商退回是理所应当,社会风俗甚至鼓励人们拾金...
        

    640?wx_fmt=gif

    640?wx_fmt=jpeg


    去中心化有其利弊,好处是高度自由,而所谓的“缺陷”就在于不“通情达理”、“效率不高”。在现实世界中,若钱包不慎丢失,去和拾得者协商退回是理所应当,社会风俗甚至鼓励人们拾金不昧。但在链上,一笔高额手续费可能流转到了上万个矿工手中,此时何以再集中意志去决定分配呢?


    于是,像星火矿池这样的中心化环节就被推上了风口浪尖。矿池有无权力裁定这笔手续费的去向,如果无权那么该由谁来裁定、如何裁定,对于这些,整个行业尚缺少一个统一的规则。



    文 | 黄雪姣、遂心、秦晓峰

    出品 |  Odaily星球日报(ID:o-daily)


    一笔发生在以太坊上的奇怪交易,在区块链世界引发了数天的讨论。


    2 月 19 日,以太坊上同一地址在 4 小时内进行了 5 笔小额转账,最高转账金额 0.1 以太坊,但转账手续费却远超交易额千倍,最高一笔手续费甚至高达 2100 以太坊,该笔交易由星火矿池打包。


    这笔手续费原本属于谁、该怎么分配,至今没有答案,在区块链社区中亦引发了不少争论。


    矿工支持直接分掉这笔手续费,但包括鱼池、币印矿池等在内的国内矿池则向 Odaily星球日报表示,支持“有人认领应该返还”的原则。


    目前,星火矿池已将这笔手续费分配了一部分,但为了规避法律风险,星火希望将剩余手续费留由发送方出面认领,再商讨分配方案。


    在区块链这片新大陆中,诸多规则还未来得及建立,面对此类事件,并没有统一的行业规范或法律制度。


    本篇,Odaily星球日报访谈了律师、矿工、矿池等多方人士,试图从区块链自身规则、法律和人道主义等多个维度探讨——“假如失误操作发出了超高交易费,我们改该如何处置”,希望对关注本次事件的读者提供一点启发和思考。



    640?wx_fmt=png

    中头彩变“烫手山芋”

    2 月 19 日,以太坊上发生多笔高额转账手续费交易,其中最高的一笔达 2100 个以太坊,由星火矿池打包。

    如此高手续费的交易被很多人推测是操作失误,而挖出该区块的星火矿池如何分配这笔“飞来横财”也成了各方关注的重点。

    星火矿池是以太坊上的第二大矿池。截至 2 月 20 日 16:40,星火矿池在以太坊网络上的算力为 32.58 TH/s,约占全网算力的 20.8%。矿池共有以太坊矿工 1.03 万名,接入矿机数近 14 万。

    20 日下午,星火矿池发布公告称,该异常现象触发矿池程序内部应急机制,为避免法律风险和不必要的纠纷,目前该交易费已被冻结,等待发送方来联系矿池商讨解决方案。如果发送方长时间不联系放弃沟通,星火将把手续费分给矿工。

    看到这条公告后,在星火矿池挖矿的以太坊矿工范恒有些生气,他在矿工群中吐槽道:“垃圾星火,能挖到也不是你的功劳,而是所有矿工的算力,所以你有权利决定这以太(坊)的去留吗?”

    在范恒看来,2100 个以太坊几乎是星火矿池所有矿工一天的收益,若分给矿工,能让其收益翻倍;除了利益外,区块链的第一法则是不可篡改,“币圈没太多诚信可言,以法则为上”。星火矿池这样做已经违背了法则,也违背了自己制定的 PPS+。

    星火矿池是率先在国内实行 PPS+ 的矿池。PPS+ ( Pay Per Share Plus )是一种矿池和矿工分配利润的模式,是在 PPS 模式的基础上,增加了交易手续费的分配。在该模式下,交易手续费是需要分配给矿工的。

    (注:PPS 模式即根据矿工算力在矿池中的占比,并估算矿池每天可获得的资产,每天分配给矿工固定收益。)

    星火矿池方面则表示,目前已将 2100 个以太坊的部分分给矿工。至于这“部分”是多少,星火方面表示“没有统计数据,回答不了”,未发放的部分即公告中提到的“被冻结”的手续费。

    对于还在“冻结”的手续费,星火矿池的处理态度很明确,“优先考虑和这 2100 个以太坊的发送方取得联系,共同协商分配方案

    这种做法自然引起了矿池内部分以太坊矿工的不满,双方的争论由此产生。


    640?wx_fmt=png

    会产生法律纠纷吗?

    星火方面表示,自己其实并不愿和客户也就是矿工产生冲突,但如果直接分掉那笔意外之财恐有法律纠纷。

    于是,星火矿池决定公示并等待对方联系自己,不过对于具体的公示等待时间,星火方面并没有给出。

    那么,法律上对于“公示时间”是如何规定的呢?

    中国银行法学研究会理事肖飒向 Odaily星球日报表示,“法律上并没有法定时间节点,要看之前的约定或达成的共识是如何规定的”。鉴于此前并无相关共识,换言之星火矿池的“公示等待时间”可以自行设定。

    星火矿池到底应不应该归还这笔高额的转账费?如果星火矿池不归还,发送方能不能获得法律支持呢?

    对此,肖飒表示,“这是民事法律关系,原则是尊重各主体的意志,以约定优先,如果有证据可以证明链上的规则,就可以依据规则履行各方权利和义务。”

    根据链上共识,发送方支付给矿工的手续费并无归还的约定,也即在社会法律中发送方并不能得到法律的支持。

    另外一个关键问题是,矿池方面是否有权利决定这笔高额矿工费的去留?

    对此,北京德恒律师事务所律师徐凯向 Odaily星球日报表示,在双方没有书面约定的前提下,如果打包块的矿工是星火矿池自己,则无可厚非;如果这个矿工是一个个具体的矿工,那么该矿工可以要求立即支付这笔交易已经生效的矿工费。

    “如果矿工入驻时和矿池签署了合同,合同中有约定的,要按合同约定履行。”但据星火矿池的以太坊矿工姜瑞透露,自己和平台之间并没有签署合同,若矿池实在没分给自己那笔手续费也没办法。

    值得注意的是,和此次的“害怕法律纠纷”相反的是,星火矿池在 1 年多前的类似事件中选择直接将手续费直接分给矿工。

    2017 年 10 月 11 日,星火矿池曾在 4356580 区块打包过一笔 190 个以太坊手续费的交易,星火矿池随后将该笔费用分给矿工。

    两次的不同点在于,之前那次异常手续费并没有触发星火矿池的预警机制,因此矿池没有扣留那次的手续费。至于这个预警机制是什么,星火矿池表示“不方便告知”。


    640?wx_fmt=png

    五大矿池联手解析

    对目前全行业最为关心的 2100 个以太坊交易费去留问题,Odaily星球日报还咨询了国内 5 大矿池 ,各方的观点基本分成了去中心化和人道主义两派。

    • 去中心化派赞成分给矿工

    Rawpool 矿池创始人、区块链金融公司 BitRock 副总裁 David:

    矿池是中心化的,是个去中心化的 POW 机制中的 BUG。

    逻辑上,钱是属于矿工的,在矿池和矿工之间没有新的约定时,当然应该发给矿工。

    换句话说,如果矿池和参与到该区块挖矿的算力都达成一致的“不分”的约定,就可以“拾金不昧”(把这笔钱物归原主)。但现在来看双方并没有达成这种约定。

    • 人道主义派则赞成星火矿池的做法

    BTC.com 矿池某不愿具名的人士:

    这个星火怎么处理我都觉得有道理,发给矿工是理,还给事主是情。

    Rawpool 矿池 CMO 黄猛:

    (不管是对于发送方还是矿工都是)真金白银的损失,所以大家都觉得自己是受害者。如果不返还,有可能发酵成撕逼大战。

    现在星火处于舆论中心,搞不好就是里外不是人。如果最后星火背锅,就太可怜了。现在就是,找不找得到发送方是个问题。

    F2Pool 鱼池创始人神鱼:

    这个分配原则一般是有人来认领就返还,之前比特币上也发生过多次因误操作支付了大量手续费的情况。如果没人认领的话就看矿池的分配协议,如果是 PPLNS 和 PPS+ 的话是要分的。

    Poolin 币印矿池联合创始人朱砝:

    矿池一直都是这么做的,这个是路不拾遗,我们假定我们的客户也都是诚信的,也是乐于路不拾遗的。

    非要从技术逻辑上说,是可以不退,那样未免太不近人情。

    之前我在 BTC.com 矿池,他们挖到过好几次这种收益,最高的一次有 60 多个 BTC。失主肯定会过来的,最长的一次有两三个月后才过来的。

    面对各矿池和矿工不同的态度,星火矿池还曾向 Odaily星球日报强调,从他们的角度,即使交易者找上门,也并不是说会将这笔交易费直接归还,而是会进一步探讨赔偿方案。

    值得注意的是,在 19 日的 5 个高额转账手续费中,除了星火矿池挖到最高的 2100 以太坊外,另外 4 个交易被 Nano 矿池和 Ethermine 两家矿池打包。其中,Nano 矿池打包了 3 个。

    目前,这两家矿池并没有公开表明对这些高额手续费的处理态度。

    但从矿池收益分配模式而言,Nano 矿池和 Ethermine 采用分配模式都是 PPLNS。

    PPLNS (Pay Per Last N Shares )模式下的收益分配意味着,一旦挖出一个区块,所有矿工将根据自己贡献的股份数量占比来分配区块中的以太坊份额。

    在这种“即挖即分”的模式下,“Nano 矿池和 Ethermine 应该已将高额手续费分给矿工”,星火矿池创始人许昕表示。


    640?wx_fmt=png

    难解的“悖论"

    如何分配以太坊巨额手续费的问题,再次触及区块链世界去中心化和人道主义的争论。

    2 月 21 日,朱砝在自己的朋友圈再次表达对这件事的看法,他表示但凡与他所带领的团队相关的,最后无一例外地都归还了失主。


    另外他认为,随着比特币生态的完善、钱包 App 的进化,错误打出交易费的事件将会变少,但以太坊生态还比较年轻,类似的错误在所难免。

    在以太坊的框架设计中,并无人治、考虑社会契约的代码体现。但我们知道,在 THE DAO 事件中,为了维护社会契约,以太坊用硬分叉的方式强制回滚了被盗代币。

    去中心化有其利弊,好处是高度自由,而所谓的“缺陷”就在于不“通情达理”、“效率不高”。在现实世界中,若钱包不慎丢失,去和拾得者协商退回是理所应当,社会风俗甚至鼓励人们拾金不昧。但在链上,一笔高额手续费可能流转到了上万个矿工手中,此时何以再集中意志去决定分配呢?

    于是,像星火矿池这样的中心化环节就被推上了风口浪尖。矿池有无权力裁定这笔手续费的去向,如果无权那么该由谁来裁定、如何裁定,对于这些,整个行业尚缺少一个统一的规则。

    一个去中心化社区在治理中会发生各类意外情况,此时要达成超出规定之外的共识并不简单,否则以太坊也无需硬分叉。

    我们看到,在链上治理上另一条公链 EOS 就走了不同的道路。EOS 自诞生之初就设立了仲裁机构—— ECAF( EOS 核心仲裁法庭),至今已经下过多起财产纠纷的判决。

    业内人士对 ECAF 的评价也褒贬不一,支持者认为其可以高效解决争端,追回被盗代币;反对者认为其过于中心化,是另外一种意义上的强权。也因此,ECAF 也许行将结束它在链上的使命。

    今年 1 月 11 日,EOS Authority 网站上开展了“是不是应该把 ECAF 废除掉”的投票活动,截止到目前,97% 的票数都投给了“应该废除”。距离投票截止还剩不到 3 个月,ECAF 就此被废也有可能。

    现在,尚没有一个成熟的解决链上争议的机制。如何去设计调解的思想和组织形式,尚需要我们继续思考。

    原创文章,转载/内容合作/寻求报道请联系 report@odaily.com;未经授权严禁转载,违规转载法律必究。

    640?

    不容错过的往期精彩


    640?wx_fmt=jpeg


    640?wx_fmt=jpeg


    640?wx_fmt=jpeg

    优质的推送带来深刻的思考

    给 Odaily 标星,让你先与众不同

    640?wx_fmt=gif


    640?wx_fmt=gif

    展开全文
  • 最初,跟扩散项中所采用的离散方式一样,对流项也是对物理量采用对称和线性分布(廓线profile)假设来离散的,然而,这种分布廓线很大缺陷,促使人们提出了使用迎风廓线来修正其缺陷。尽管迎风廓线可以得到物理上...

    学习自F. Moukalled, L. Mangani, M. Darwish所著The Finite Volume Method in Computational Fluid Dynamics - An Advanced Introduction with OpenFOAM and Matlab
    Chapter 11 Discretization of the Convection Term

    在前面的第8-9章,咱们详细讲解了在正交、非正交、结构、非结构网格上的通有稳态扩散方程的离散方法。本章咱们讲讲CFD的控制方程中另一个非常重要的项,对流项的离散方法。最初,跟扩散项中所采用的离散方式一样,对流项也是对物理量采用对称和线性分布(廓线profile)假设来离散的,然而,这种分布廓线有很大缺陷,促使人们提出了使用迎风廓线来修正其缺陷。尽管迎风廓线可以得到物理上说得通的结果,然而其被表明是高度diffusive(扩散?)的,导致结果只有一阶精度。为了提高精度,提出了偏迎风的高阶廓线。离散误差倒是降低了,但是高阶廓线却引出了另一种形式的误差,dispersion误差(色散?),关于这种误差的处理方法将放到下一章讲解。还有一点需要说明,我们假设驱动扩散项的流场,是事先已知的。那么流场的计算将放到后续章节里详解(可能你已经猜到了,因为离散方程的系数矩阵本身就是与流场量相关的,哪怕是定常流场,也需要迭代计算,而不可压缩中还有压力速度的耦合问题,还得构造解耦算法来折腾呢)。

    1 引言

    尽管对流项看起来很简单,然而其离散方法却非常麻烦,以至于人们研究了30来年。这些工作给影响其离散的问题照亮了道路,也催生了大量的离散格式。鉴于文献的数量是如此庞大,咱们不得不用两个章节来分析它们。本章将引入基本概念和高阶(High Order,缩写为HO)偏迎风格式。下一章会讲到对流项的界限(bounding)问题,其有助于发展高阶精度的无振荡对流格式,即,所谓的高分辨率(High Resolution(HR))格式。

    为清晰起见,新概念的引入将首先在1维网格上进行,然后再扩展到多维非正交网格上。本章将用1维对流-扩散问题的离散作为开端,通过稳定性判据,表明中心差分算法的缺陷。随后,表明迎风格式可通过该稳定性测试。接着解释了低阶格式的数值diffusion(扩散)误差和高阶格式的数值dispersion(色散)误差。而对高分辨率格式的处理则放到下一章进行讲解。

    2 稳态一维对流和扩散

    为便于说明问题,给出一个非常简单的一维定常对流-扩散方程,其控制方程为
    d(ρuϕ)dxddx(Γϕdϕdx)=0 \frac{d(\rho u \phi)}{d x} - \frac{d}{dx}\left( \Gamma^{\phi}\frac{d \phi}{d x} \right)=0
    万分幸运的是,这个问题存在着解析解,所以它通常用作基准算例来跟各种各样的数值格式做对照。

    2.1 解析解

    如果截面是不变的,那么这个稳态1维问题的连续方程是
    d(ρu)dx=0 \frac{d (\rho u)}{d x}=0
    这表明ρu\rho u是定值,那么对流扩散方程变成了
    ρudϕdxddx(Γϕdϕdx)=0 \rho u \frac{d \phi}{d x} - \frac{d}{dx}\left( \Gamma^{\phi}\frac{d \phi}{d x} \right)=0
    xx积分,得
    ρuϕΓϕdϕdx=c1 \rho u \phi - \Gamma^{\phi}\frac{d \phi}{d x}=c_1
    c1c_1为积分常数,由边界条件来定。上面这个方程进一步写成
    dϕdx=ρuΓϕϕc1Γϕ \frac{d \phi}{d x}=\frac{\rho u}{ \Gamma^{\phi}} \phi - \frac{c_1}{ \Gamma^{\phi}}
    引入变量替换,定义Φ\Phi
    Φ=ρuΓϕϕc1Γϕ \Phi=\frac{\rho u}{ \Gamma^{\phi}} \phi - \frac{c_1}{ \Gamma^{\phi}}
    则方程变为
    dΦdx=ρuΓϕΦ \frac{d\Phi}{dx}=\frac{\rho u}{\Gamma^\phi}\Phi

    dΦΦ=ρuΓϕdx \frac{d\Phi}{\Phi}=\frac{\rho u}{\Gamma^\phi} dx
    两侧同时积分,得
    Ln(Φ)=ρuΓϕx+c3 Ln(\Phi)=\frac{\rho u}{\Gamma^\phi} x + c_3
    其中c3c_3为积分常数,进一步写为
    Φ=c2eρuΓϕx \Phi = c_2 e^{\frac{\rho u}{\Gamma^\phi} x }
    其中c2=ec3c_2=e^{c_3}为积分常数,再把Φ\Phi替换回最初的变量ϕ\phi,得到解析解
    ϕ=c2ΓϕeρuΓϕx+c1ρu \phi=\frac{c_2\Gamma^\phi e^{\frac{\rho u}{\Gamma^\phi} x }+ c_1}{\rho u}
    一维问题的网格剖分如下图所示
    在这里插入图片描述

    以上图的WWEE两节点之间的部分为例,边界条件为
    {ϕ=ϕWatx=xWϕ=ϕEatx=xE\begin{cases} \phi=\phi_W&at&x=x_W \\ \phi=\phi_E&at&x=x_E \end{cases}
    可根据该边界条件求得积分常数c1c_1c2c_2,从而获得解析解为
    ϕϕWϕEϕW=ePeLxxWL1ePeL1 \frac{\phi-\phi_W}{\phi_E-\phi_W}=\frac{e^{Pe_L\frac{x-x_W}{L}}-1}{e^{Pe_L}-1}
    其中PeLPe_L为Peclet数(基于长度LL),代表了变量ϕ\phi的对流输运速率与扩散输运速率的比值,即
    PeL=ρuLΓϕL=xExW Pe_L=\frac{\rho u L}{\Gamma^\phi}\quad\quad L = x_E-x_W
    不同的PeLPe_L下所得到的不同结果如下图所示,可见,PeL=0Pe_L=0时对应的是纯扩散问题,ϕ\phiWWEE的变化是一条直线,而随着PeLPe_L的增大,对流输运速率所占比重越来越大,ϕ\phiWWEE的变化也逐渐变为了更加陡峭的廓线形式。
    在这里插入图片描述

    2.2 数值解

    在1维单元上对于1维对流扩散方程d(ρuϕ)dxddx(Γϕdϕdx)=0\displaystyle\frac{d(\rho u \phi)}{d x} - \frac{d}{dx}\left( \Gamma^{\phi}\frac{d \phi}{d x} \right)=0进行数值积分,得
    VC[(ρvϕ)(Γϕϕ)]dV=0 \int_{V_C}[\nabla\cdot(\rho\bold v\phi)-\nabla\cdot(\Gamma^\phi\nabla\phi)]dV=0
    其中v=ui\bold v=u\bold i为速度矢量,守恒方程可以写成对流通量和扩散通量的形式,即
    VC(Jϕ,C+Jϕ,D)dV=0 \int_{V_C}\nabla\cdot(\bold J^{\phi,C}+\bold J^{\phi,D})dV=0
    其中对流通量Jϕ,C=ρvϕ\bold J^{\phi,C}=\rho\bold v\phi,扩散通量Jϕ,D=Γϕϕ\bold J^{\phi,D}=-\Gamma^\phi\nabla\phi。接下来使用散度定理,把体积分转化成面积分,即
    VC(Jϕ,C+Jϕ,D)dV=VC(Jϕ,C+Jϕ,D)dS=VC(ρuϕiΓϕdϕdxi)dS=0 \int_{V_C}\nabla\cdot(\bold J^{\phi,C}+\bold J^{\phi,D})dV= \int_{\partial V_C}(\bold J^{\phi,C}+\bold J^{\phi,D})\cdot d\bold S= \int_{\partial V_C}\left(\rho u \phi \bold i-\Gamma^\phi \frac{d\phi}{dx}\bold i\right)\cdot d\bold S = 0
    将面积分用流过单元面的通量加和形式表示,即
    fnb(C)(ρuϕiΓϕdϕdxi)fSf=0 \sum_{f\sim nb(C)}\left(\rho u \phi \bold i-\Gamma^\phi \frac{d\phi}{dx}\bold i\right)_f\cdot \bold S_f=0
    注意,如果面积矢量Sf\bold S_f是沿着反方向的(x-x方向),那么它的符号是负的,对于恒定截面的情况,上式变为
    [(ρuΔyϕ)e(ΓϕdϕdxΔy)e][(ρuΔyϕ)w(ΓϕdϕdxΔy)w]=0 \left[(\rho u \Delta y\phi)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e\right]- \left[(\rho u \Delta y\phi)_w-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=0
    单元面上的速度uu是已知的(ue,uwu_e,u_w已知),那些个梯度项((dϕ/dx)e,(dϕ/dx)w({d\phi}/{dx})_e,({d\phi}/{dx})_w)用之前讲过的离散方法可以得到。现在的问题是如果继续离散的话,面上的值ϕe\phi_eϕw\phi_w需要用邻近的节点值来得到,确定这些面上值的方法就是文献中所谓的“对流格式”。

    2.3 初步推导:中心差分格式(The Center Difference (CD) Scheme)

    乍一看,好像没啥难的啊,就跟在扩散项离散中采用的线性插值廓线一样,来做这个对流离散不就好了么,即,在给定面比如右侧面ee上的ϕ\phi值的计算,可以假设变量的空间分布为
    ϕ(x)=k0+k1(1xC) \phi(x)=k_0+k_1(1-x_C)
    其中的k0k_0k1k_1为系数,使用ϕ=ϕE,x=xE\phi=\phi_E,x=x_Eϕ=ϕC,x=xC\phi=\phi_C,x=x_C,可得
    ϕe=ϕC+ϕEϕCxExC(xecC) \phi_e=\phi_C+\frac{\phi_E-\phi_C}{x_E-x_C}(x_e-c_C)
    这便是中心差分格式,其可通过Taylor展开并略去2阶以上的项来推出,即其有2阶精度。

    在均匀网格上,该离散型式为
    ϕe=ϕC+ϕE2 \phi_e=\frac{\phi_C+\phi_E}{2}
    这样,对于上一小节最后得到的离散格式中,第1个中括号项[(ρuΔyϕ)e(ΓϕdϕdxΔy)e]\left[(\rho u \Delta y\phi)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e\right]变为
    [(ρuΔyϕ)e(ΓϕdϕdxΔy)e]=(ρuΔy)eϕC+ϕE2(ΓϕΔyδx)e(ϕEϕC)=FluxCeϕC+FluxFeϕE+FluxVe\begin{aligned} \left[(\rho u \Delta y\phi)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e\right] & = (\rho u \Delta y)_e\frac{\phi_C+\phi_E}{2}-\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_e(\phi_E-\phi_C) \\ & = FluxC_e\phi_C+FluxF_e\phi_E+FluxV_e \end{aligned}
    其中
    FluxCe=ΓeϕΔyeδxe+(ρuΔy)e2FluxFe=ΓeϕΔyeδxe+(ρuΔy)e2FluxVe=0\begin{aligned} & FluxC_e = \Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2} \\ & FluxF_e = -\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2} \\ & FluxV_e = 0 \end{aligned}
    同样,第2个中括号项[(ρuΔyϕ)w(ΓϕdϕdxΔy)w]-\left[(\rho u \Delta y\phi)_w-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]变为
    [(ρuΔyϕ)w(ΓϕdϕdxΔy)w]=[(ρuΔy)wϕC+ϕW2(ΓϕΔyδx)w(ϕCϕW)]=FluxCwϕC+FluxFwϕW+FluxVw\begin{aligned} -\left[(\rho u \Delta y\phi)_w-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right] &= -\left[ (\rho u \Delta y)_w\frac{\phi_C+\phi_W}{2}-\left(\Gamma^\phi \frac{\Delta y}{\delta x}\right)_w(\phi_C-\phi_W) \right] \\ & = FluxC_w\phi_C+FluxF_w\phi_W+FluxV_w \end{aligned}
    其中
    FluxCw=ΓwϕΔywδxw(ρuΔy)w2FluxFw=ΓwϕΔywδxw(ρuΔy)w2FluxVw=0\begin{aligned} & FluxC_w = \Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \\ & FluxF_w = -\Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \\ & FluxV_w = 0 \end{aligned}
    从而推得对流扩散方程的离散形式为
    aCϕC+aEϕE+aWϕW=0 a_C\phi_C+a_E\phi_E+a_W\phi_W=0
    其中
    aE=FluxFe=ΓeϕΔyeδxe+(ρuΔy)e2aW=FluxFw=ΓwϕΔywδxw(ρuΔy)w2aC=FluxCe+FluxCw=ΓeϕΔyeδxe+(ρuΔy)e2+ΓwϕΔywδxw(ρuΔy)w2\begin{aligned} & a_E=FluxF_e=-\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2} \\ & a_W=FluxF_w=-\Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \\ & a_C=FluxC_e+FluxC_w=\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2}+ \Gamma^\phi_w \frac{\Delta y_w}{\delta x_w}-\frac{(\rho u \Delta y)_w}{2} \end{aligned}
    由于问题是一维的,有Δye=Δyw\Delta y_e=\Delta y_w,故可把它们都设成1。此外,从连续方程可得到(ρuΔy)e(ρuΔy)w=0(\rho u \Delta y)_e-(\rho u \Delta y)_w=0,且uu为常数。假设扩散系数为定值,则离散方程系数变为
    aE=ΓϕxExC+(ρu)e2aW=ΓϕxCxW(ρu)w2aC=(aE+aW)\begin{aligned} & a_E=-\frac{\Gamma^\phi}{x_E-x_C}+\frac{(\rho u)_e}{2} \\ & a_W=-\frac{\Gamma^\phi}{x_C-x_W}-\frac{(\rho u)_w}{2} \\ & a_C=-(a_E+a_W) \end{aligned}
    回代到离散格式aCϕC+aEϕE+aWϕW=0a_C\phi_C+a_E\phi_E+a_W\phi_W=0,可得
    ϕCϕWϕEϕW=aEaE+aW \frac{\phi_C-\phi_W}{\phi_E-\phi_W}=\frac{a_E}{a_E+a_W}
    如果是均匀网格,可以写成PeL=ρuLΓϕ,L=xExWPe_L=\frac{\rho u L}{\Gamma^\phi},L = x_E-x_W的形式,单元CC的数值解为(注意,书中给出的公式RHS为12(1PeL2)\frac{1}{2}(1-\frac{Pe_L}{2})实际应为12(1PeL4)\frac{1}{2}(1-\frac{Pe_L}{4})
    ϕCϕWϕEϕW=12(1PeL4) \frac{\phi_C-\phi_W}{\phi_E-\phi_W}=\frac{1}{2}\left( 1- \frac{Pe_L}{4} \right)
    单元CC的精确解,由上一小节的解析解给出
    ϕCϕWϕEϕW=ePeL/21ePeL1 \frac{\phi_C-\phi_W}{\phi_E-\phi_W}=\frac{e^{Pe_L/2}-1}{e^{Pe_L}-1}
    PeLPe_L从-10变化到10,数值解和解析解给出的结果展示在下图中,当PeLPe_L值(绝对值)较小时,数值解和解析解非常接近,当PeLPe_L的值(绝对值)逐渐增大并跨过阈值后,中心差分格式给出的数值解就和解析解产生了很大偏差,其变得不受约束(无界)呈现出不符合物理意义的特性。即,解析解对于正的和负的PeLPe_L分别逐渐趋近于0和1,中心差分格式给出的数值解则随着PeLPe_L-\infin增大到++\infin而从++\infin线性减小到-\infin。这表明前面离散过程中采用的某些假设是不切实际的或者说是不符合物理意义的,到底是什么原因造成的呢?

    在这里插入图片描述

    如下图所示,在点CC处的扩散所受到CC点上游和下游条件的影响是等效的(下图a),而对流过程则是与方向高度相关的过程,其仅在流动方向上有输运特性(下图b)。因此,给上下游节点赋予了同样的权重的线性廓线假设,对于扩散项的近似是没问题的(下图a),却没办法描述对流项的方向特性,此时陡峭的廓线更为合适(下图b),这便是造成前述中心差分格式数值解和解析解之间偏差的原因。

    下图c给出了对流-扩散联合效应下的影响区域以及更加实际的廓线,该影响区域在低Peclet数下趋近于扩散区域(下图a),在高Peclet数下则趋近于对流区域(下图b)。因此,只要扩散在传输特性中占优,那么使用线性廓线能产生符合物理实际的解。然而,一旦对流压倒了扩散(问题变得对流占优了),再用线性廓线的假设就会产生不符合物理意义的解。可以容易地估算出Peclet数在何值下会产生该现象,假设流动是沿着xx正方向的,注意到aEa_E系数有可能会变成正值,这样便会导致非物理解(如果流动是沿着xx负方向的话,那么aWa_W可能会变成正值),即

    在这里插入图片描述

    aE=ΓeϕΔyeδxe+(ρuΔy)e2>0(ρu)eδxeΓeϕ>2 a_E=-\Gamma^\phi_e \frac{\Delta y_e}{\delta x_e}+\frac{(\rho u \Delta y)_e}{2}>0 \Rightarrow \frac{(\rho u)_e\delta x_e}{\Gamma_e^\phi} > 2
    定义Peclet数为
    Pe=ρuδxΓϕ Pe=\frac{\rho u\delta x}{\Gamma^\phi}
    这样,对于均匀网格来说,Pe=PeL/2Pe=Pe_L/2,那么aE>0a_E>0的条件变为
    Pe>2 Pe>2
    因此,单元的Peclet数(Pe)大于2的话,离散过程变得不相符,因为此时邻居值的增加会导致CC处值的降低,这又会反过来进一步增加邻居值,导致错误的放大。

    当然,通过减小网格尺度让单元Peclet数小于2,就可以避免这种情况。然而,对于很多实际情况,这样做的话将会显著增加存储量和计算量,以至超出计算机负荷。而且,对于纯对流的问题(即不考虑粘性扩散效应,例如,Euler流动),这么做的话也是不可行的,所以需要发展修正方法。

    2.4 迎风格式(Upwind Scheme)

    在这里插入图片描述

    如上图,与对流过程更加契合的格式为迎风格式,迎风格式基本上是模仿了对流的物理特性,即,单元面上的值是依赖于迎风节点上的值的,换言之,依赖于流动方向的。图中所示的单元面上的值用下式给出
    ϕe={ϕCifm˙e>0ϕEifm˙e<0ϕw={ϕCifm˙w>0ϕWifm˙w<0 \phi_e=\begin{cases} \phi_C & if & \dot m_e > 0 \\ \phi_E & if & \dot m_e < 0 \end{cases} \quad\quad\quad \phi_w=\begin{cases} \phi_C & if & \dot m_w > 0 \\ \phi_W & if & \dot m_w < 0 \end{cases}
    (注意,这里的ϕw\phi_w没有写反,因为质量流量m˙\dot m跟速度uu是不同的,看下面说明)

    其中m˙e\dot m_em˙w\dot m_w是在面eeww的质量流量(面积矢量的正方向是朝外的,而非指向单元中心CC的)
    m˙e=(ρvS)e=(ρuS)e=(ρuΔy)em˙w=(ρvS)w=(ρuS)w=(ρuΔy)w\begin{aligned} & \dot m_e=(\rho \bold v \cdot \bold S)_e=(\rho u S)_e=(\rho u \Delta y)_e \\ & \dot m_w=(\rho \bold v \cdot \bold S)_w=-(\rho u S)_w=-(\rho u \Delta y)_w \end{aligned}
    如此,面ee的对流通量可写成
    m˙eϕe=m˙e,0ϕCm˙e,0ϕE=FluxCeConvϕC+FluxFeConvϕE+FluxVeConv\begin{aligned} \dot m_e \phi_e &= ||\dot m_e,0||\phi_C-||-\dot m_e,0||\phi_E \\ &= FluxC_e^{Conv}\phi_C+FluxF_e^{Conv}\phi_E+FluxV_e^{Conv} \end{aligned}
    其中
    FluxCeConv=m˙e,0FluxFeConv=m˙e,0FluxVeConv=0\begin{aligned} &FluxC_e^{Conv}= ||\dot m_e,0|| \\ &FluxF_e^{Conv}=-||-\dot m_e,0|| \\ &FluxV_e^{Conv}=0 \end{aligned}
    其中的a,b=max(a,b)||a,b||=\max(a,b)代表了aabb中的最大值。同样手法,也可推导面ww的对流通量
    m˙wϕw=m˙w,0ϕCm˙w,0ϕW=FluxCwConvϕC+FluxFwConvϕW+FluxVwConv\begin{aligned} \dot m_w \phi_w &= ||\dot m_w,0||\phi_C-||-\dot m_w,0||\phi_W \\ &= FluxC_w^{Conv}\phi_C+FluxF_w^{Conv}\phi_W+FluxV_w^{Conv} \end{aligned}
    其中
    FluxCwConv=m˙w,0FluxFwConv=m˙w,0FluxVwConv=0\begin{aligned} &FluxC_w^{Conv}= ||\dot m_w,0|| \\ &FluxF_w^{Conv}=-||-\dot m_w,0|| \\ &FluxV_w^{Conv}=0 \end{aligned}
    把扩散项用上标Diff{Diff}表示,推得一维稳态对流扩散方程的离散格式为
    (FluxCeConv+FluxCeDiff+FluxCwConv+FluxCwDiff)ϕC+(FluxFeConv+FluxFeDiff)ϕE+(FluxFwConv+FluxFwDiff)ϕW=0\begin{aligned} (FluxC_e^{Conv}&+FluxC_e^{Diff}+FluxC_w^{Conv}+FluxC_w^{Diff})\phi_C\\ &+(FluxF_e^{Conv}+FluxF_e^{Diff})\phi_E+(FluxF_w^{Conv}+FluxF_w^{Diff})\phi_W=0 \end{aligned}
    可写成下面形式
    aCϕC+aEϕE+aWϕW=bC a_C\phi_C+a_E\phi_E+a_W\phi_W=b_C
    其中
    aE=FluxFeConv+FluxFeDiff=m˙e,0ΓeϕSeδxeaW=FluxFwConv+FluxFwDiff=m˙w,0ΓwϕSwδxwaC=f(FluxCfConv+FluxCfDiff)=m˙e,0+m˙w,0+ΓeϕSeδxe+ΓwϕSwδxw=(aE+aW)+(m˙e+m˙w)=0bC=f(FluxVfConv+FluxVfDiff)=0\begin{aligned} a_E&= FluxF_e^{Conv}+FluxF_e^{Diff} \\ &= -||-\dot m_e,0|| - \Gamma^\phi_e \frac{S_e}{\delta x_e} \\ a_W&= FluxF_w^{Conv}+FluxF_w^{Diff} \\ &=-||-\dot m_w,0|| -\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ a_C&= \sum_f \left( FluxC_f^{Conv} + FluxC_f^{Diff} \right)\\ &=||\dot m_e,0||+||\dot m_w,0||+\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ &=-(a_E+a_W)+\underbrace{(\dot m_e + \dot m_w)}_{=0} \\ b_C&=-\sum_f \left( FluxV_f^{Conv} + FluxV_f^{Diff} \right)\\ &=0 \end{aligned}
    显而易见,迎风格式推出了负的邻居系数,而且在满足连续方程的情况下(即,m˙e+m˙w=0\dot m_e + \dot m_w=0),主节点上的系数为
    aC=(aW+aE) a_C=-(a_W+a_E)
    这确保了有界性。

    在连续方程满足的前提下,假设为均匀网格和常扩散系数,用ϕE\phi_EϕW\phi_W所给出的ϕC\phi_C值为
    ϕCϕWϕEϕW=2+PeL,04+PeL,0+PeL,0=2+PeL,04+PeL \frac{\phi_C-\phi_W}{\phi_E-\phi_W} =\frac{2+||-Pe_L,0||}{4+||-Pe_L,0||+||Pe_L,0||} =\frac{2+||-Pe_L,0||}{4+|Pe_L|}
    将该迎风格式的数值解与精确的解析解、之前中心差分格式的数值解一并展示于下图中。当PeLPe_L的值(绝对值)较小时,迎风格式并没有中心差分格式的结果准确,这是因为迎风廓线只有一阶精度,而线性廓线具有二阶精度;而当PeLPe_L的值(绝对值)较大时,中心差分格式是不稳定的,其表现为无界性,已经失去了物理意义,而此时的迎风格式,尽管并不是特别准确,但是物理意义上是正确的。
    在这里插入图片描述

    如此一来,就有了精确性和稳定性之间的权衡。使用迎风格式,得到的解即便在高PeLPe_L下依旧保持有界性和有物理意义,然而付出的代价就是精度较低。另一方面,二阶精度的中心差分格式当PeLPe_L超出特定阈值的时候会变得不稳定,产生不符合物理意义的解。两种格式都受到了误差的影响,一个影响了精确性,另一个影响了稳定性。这些都是什么误差呢?在引入背风(downwind)格式后,咱们再讨论这个问题。

    2.5 背风格式(Downwind Scheme)

    在这里插入图片描述

    如果把迎风格式反过来用,即,用背风格式的话,会发生什么有趣的事情呢?如上图所示,在这种插值廓线中,是把界面背风方向节点处的值视作界面上的值,这样,面ee和面ww处的值为
    ϕe={ϕEifm˙e>0ϕCifm˙e<0ϕw={ϕWifm˙w>0ϕCifm˙w<0 \phi_e=\begin{cases} \phi_E & if & \dot m_e>0 \\ \phi_C & if & \dot m_e<0 \end{cases} \quad\quad\quad \phi_w=\begin{cases} \phi_W & if & \dot m_w>0 \\ \phi_C & if & \dot m_w<0 \end{cases}
    面上的对流通量可以写成
    m˙eϕe=m˙e,0ϕC+m˙e,0ϕE=FluxCeConvϕC+FluxFeConvϕE+FluxVeConvm˙wϕw=m˙w,0ϕC+m˙w,0ϕW=FluxCwConvϕC+FluxFwConvϕW+FluxVwConv\begin{aligned} \dot m_e\phi_e & = - ||-\dot m_e,0||\phi_C+||\dot m_e,0||\phi_E \\ &= FluxC_e^{Conv}\phi_C+FluxF_e^{Conv}\phi_E+FluxV_e^{Conv} \\ \dot m_w\phi_w & = - ||-\dot m_w,0||\phi_C+||\dot m_w,0||\phi_W \\ &= FluxC_w^{Conv}\phi_C+FluxF_w^{Conv}\phi_W+FluxV_w^{Conv} \end{aligned}
    可进一步推得一维稳态对流扩散方程的离散形式为
    (FluxCeConv+FluxCeDiff+FluxCwConv+FluxCwDiff)ϕC+(FluxFeConv+FluxFeDiff)ϕE+(FluxFwConv+FluxFwDiff)ϕW=0\begin{aligned} (FluxC_e^{Conv}&+FluxC_e^{Diff}+FluxC_w^{Conv}+FluxC_w^{Diff})\phi_C\\ &+(FluxF_e^{Conv}+FluxF_e^{Diff})\phi_E+(FluxF_w^{Conv}+FluxF_w^{Diff})\phi_W=0 \end{aligned}
    可写成下面形式
    aCϕC+aEϕE+aWϕW=bC a_C\phi_C+a_E\phi_E+a_W\phi_W=b_C
    其中
    aE=FluxFeConv+FluxFeDiff=m˙e,0ΓeϕSeδxeaW=FluxFwConv+FluxFwDiff=m˙w,0ΓwϕSwδxwaC=f(FluxCfConv+FluxCfDiff)=m˙e,0m˙w,0+ΓeϕSeδxe+ΓwϕSwδxw=(aE+aW)+(m˙e+m˙w)=0bC=f(FluxVfConv+FluxVfDiff)=0\begin{aligned} a_E&= FluxF_e^{Conv}+FluxF_e^{Diff} \\ &= ||\dot m_e,0|| - \Gamma^\phi_e \frac{S_e}{\delta x_e} \\ a_W&= FluxF_w^{Conv}+FluxF_w^{Diff} \\ &=||\dot m_w,0|| -\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ a_C&= \sum_f \left( FluxC_f^{Conv} + FluxC_f^{Diff} \right)\\ &=-||-\dot m_e,0||-||-\dot m_w,0||+\Gamma^\phi_e \frac{S_e}{\delta x_e}+\Gamma^\phi_w \frac{S_w}{\delta x_w} \\ &=-(a_E+a_W)+\underbrace{(\dot m_e + \dot m_w)}_{=0} \\ b_C&=-\sum_f \left( FluxV_f^{Conv} + FluxV_f^{Diff} \right)\\ &=0 \end{aligned}
    在连续方程满足的前提下,假设为均匀网格和常扩散系数,用ϕE\phi_EϕW\phi_W所给出的ϕC\phi_C值为
    ϕCϕWϕEϕW=2PeL,04PeL,0PeL,0=2PeL,04PeL \frac{\phi_C-\phi_W}{\phi_E-\phi_W} =\frac{2-||Pe_L,0||}{4-||-Pe_L,0||-||Pe_L,0||} =\frac{2-||Pe_L,0||}{4-|Pe_L|}
    不用把上式的图形画出来,也可以看出,当PeL4|Pe_L|\rightarrow4的时候,解变得完全无界。背风格式与其它格式联合起来预测突变界面时是有用的,然而这里引入背风格式的目的主要是为了便于在下一节给出更好的稳定性分析。

    3 截断误差:数值扩散和反扩散(Truncation Error: Numerical Diffusion and Anti-Diffusion)

    截断误差是由离散过程的自然近似所造成的,对于笛卡尔网格上的一维情形较容易分析。下面将做迎风、背风、中心差分格式的扩散和反扩散分析。

    3.1 迎风格式

    针对通过迎风格式离散得到的方程,尝试将其恢复到最初的积分方程并考察其截断误差。假设流动是沿着xx正方向的,将ϕC\phi_CϕW\phi_W分别写成ϕe\phi_eϕw\phi_w函数的形式,迎风格式为
    ϕe=ϕCϕw=ϕW \phi_e=\phi_C\quad\quad\quad\phi_w=\phi_W
    这样,使用迎风格式的一维对流扩散方程离散形式为
    (ρuΔy)eϕC(ρuΔy)wϕW[(ΓϕdϕdxΔy)e(ΓϕdϕdxΔy)w]=0 (\rho u \Delta y)_e\phi_C-(\rho u \Delta y)_w\phi_W- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=0
    ϕC\phi_C做一维Taylor展开,以单元面ee的值为基准,得
    ϕC=ϕe+(dϕdx)e(xCxe)+12(d2ϕdx2)e(xCxe)2+...=ϕe(dϕdx)e(xexC)+...\begin{aligned} \phi_C&=\phi_e+\left( \frac{d\phi}{dx} \right)_e(x_C-x_e)+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_e(x_C-x_e)^2+...\\ &=\phi_e-\left( \frac{d\phi}{dx} \right)_e(x_e-x_C)+... \end{aligned}
    对于均匀网格
    ϕC=ϕe(dϕdx)e(δx)e2+12(d2ϕdx2)e((δx)e2)2+... \phi_C=\phi_e-\left( \frac{d\phi}{dx} \right)_e\frac{(\delta x)_e}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_e\left(\frac{(\delta x)_e}{2}\right)^2+...
    可获得ϕW\phi_W的相似表达式
    ϕW=ϕw(dϕdx)w(δx)w2+12(d2ϕdx2)w((δx)w2)2+... \phi_W=\phi_w-\left( \frac{d\phi}{dx} \right)_w\frac{(\delta x)_w}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_w\left(\frac{(\delta x)_w}{2}\right)^2+...
    截去二阶项和高阶项,将其代入到对流项中,离散方程的左端项变为
    (ρuΔy)eϕC(ρuΔy)wϕW[(ΓϕdϕdxΔy)e(ΓϕdϕdxΔy)w]=(ρuΔy)e[ϕe(dϕdx)e(δx)e2](ρuΔy)w[ϕw(dϕdx)w(δx)w2][(ΓϕdϕdxΔy)e(ΓϕdϕdxΔy)w]\begin{aligned} &(\rho u \Delta y)_e\phi_C-(\rho u \Delta y)_w\phi_W- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=\\ &(\rho u \Delta y)_e\left[ \phi_e-\left( \frac{d\phi}{dx} \right)_e\frac{(\delta x)_e}{2} \right]-(\rho u \Delta y)_w\left[ \phi_w-\left( \frac{d\phi}{dx} \right)_w\frac{(\delta x)_w}{2} \right]-\\ &\left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right] \end{aligned}
    可以改写为
    (ρuΔy)eϕC(ρuΔy)wϕW[(ΓϕdϕdxΔy)e(ΓϕdϕdxΔy)w]=(ρuΔy)eϕe(ρuΔy)wϕw[(Γϕ+ρuδx2)e(dϕdxΔy)e(Γϕ+ρuδx2)w(dϕdxΔy)w]\begin{aligned} &(\rho u \Delta y)_e\phi_C-(\rho u \Delta y)_w\phi_W- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=\\ &(\rho u \Delta y)_e\phi_e-(\rho u \Delta y)_w\phi_w-\left[\left(\Gamma^\phi +\rho u\frac{\delta x}{2}\right)_e\left(\frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi +\rho u\frac{\delta x}{2}\right)_w\left(\frac{d\phi}{dx}\Delta y\right)_w\right] \end{aligned}
    显而易见,待求解的方程中额外加入了扩散项分量,这常被称为截断误差。数值扩散的值为
    Γtruncationϕ=ρuδx2 \Gamma^\phi_{truncation}=\rho u \frac{\delta x}{2}
    该截断误差,也称为流向扩散,通过更改扩散系数的值影响了待求解方程,从而降低了解的精确性。这样,相当于改变了对流扩散方程的扩散效应。另一方面,该额外的流向扩散效应也是有益的,因为其对解进行了限定,起到了稳定作用,可得到物理上有意义的解。

    显然,要想减少这个流向数值扩散,需要针对对流项构造高阶精度的近似格式。然而,后面章节中会讲到,这些格式在构造的时候还需要保证解的有界性。

    3.2 背风格式

    跟上一小节类似,假设流动是沿着xx正方向的,将ϕE\phi_EϕC\phi_C分别写成ϕe\phi_eϕw\phi_w函数的形式,背风格式为
    ϕe=ϕEϕw=ϕC \phi_e=\phi_E\quad\quad\quad\phi_w=\phi_C
    这样,使用背风格式的一维对流扩散方程离散形式为
    (ρuΔy)eϕE(ρuΔy)wϕC[(ΓϕdϕdxΔy)e(ΓϕdϕdxΔy)w]=0 (\rho u \Delta y)_e\phi_E-(\rho u \Delta y)_w\phi_C- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=0
    在均匀网格上,将ϕE\phi_EϕC\phi_C做一维Taylor展开,分别以单元面eeww的值为基准,得
    ϕE=ϕe+(dϕdx)e(δx)e2+12(d2ϕdx2)e((δx)e2)2+...ϕC=ϕw+(dϕdx)w(δx)w2+12(d2ϕdx2)w((δx)w2)2+...\begin{aligned} & \phi_E=\phi_e+\left( \frac{d\phi}{dx} \right)_e\frac{(\delta x)_e}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_e\left(\frac{(\delta x)_e}{2}\right)^2+...\\ & \phi_C=\phi_w+\left( \frac{d\phi}{dx} \right)_w\frac{(\delta x)_w}{2}+\frac{1}{2}\left( \frac{d^2\phi}{dx^2} \right)_w\left(\frac{(\delta x)_w}{2}\right)^2+... \end{aligned}
    截去二阶项和高阶项,将其代入到对流项中,离散方程的左端项变为
    (ρuΔy)eϕE(ρuΔy)wϕC[(ΓϕdϕdxΔy)e(ΓϕdϕdxΔy)w]=(ρuΔy)eϕe(ρuΔy)wϕw[(Γϕρuδx2)e(dϕdxΔy)e(Γϕρuδx2)w(dϕdxΔy)w]\begin{aligned} & (\rho u \Delta y)_e\phi_E-(\rho u \Delta y)_w\phi_C- \left[\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi \frac{d\phi}{dx}\Delta y\right)_w\right]=\\ & (\rho u \Delta y)_e\phi_e-(\rho u \Delta y)_w\phi_w-\left[\left(\Gamma^\phi-\rho u\frac{\delta x}{2}\right)_e\left(\frac{d\phi}{dx}\Delta y\right)_e-\left(\Gamma^\phi-\rho u\frac{\delta x}{2}\right)_w\left(\frac{d\phi}{dx}\Delta y\right)_w\right] \end{aligned}
    那么对于背风格式,其推出的离散方程中的数值扩散是负的,等于
    Γtruncationϕ=ρuδx2 \Gamma^\phi_{truncation}=-\rho u \frac{\delta x}{2}
    这作用是减小扩散系数,这会导致反扩散错误。使用背风格式的结果会造成clipping of the advected profiles(没搞懂啥意思)。实际上使用背风格式得到的一维对流扩散方程的解比中心差分格式的振荡还要剧烈。

    3.3 中心差分格式

    有限体积方法中,对中心差分格式的截断误差分析略嫌麻烦,因为梯度的计算需要用到单元面上的插值,而并非直接用到节点处的已有值。假设各处的速度是已知的,且网格是均匀的,网格尺度为Δx\Delta x,那么(ϕeϕw)(\phi_e-\phi_w)
    (ϕeϕw)Interpolated=12(ϕE+ϕC)12(ϕC+ϕW)=(ϕeϕw)Exact+TE \underbrace{(\phi_e-\phi_w)}_{Interpolated}=\frac{1}{2}(\phi_E+\phi_C)-\frac{1}{2}(\phi_C+\phi_W)= \underbrace{(\phi_e-\phi_w)}_{Exact}+TE
    式中的TETE代表截断误差,为了算出截断误差,做Taylor展开,基于精确的ϕe\phi_eϕw\phi_w做展开,得
    ϕW=ϕwΔx2ϕw+Δx28ϕwΔx348ϕw+Δx4384ϕwivΔx53840ϕwv+...ϕC=ϕw+Δx2ϕw+Δx28ϕw+Δx348ϕw+Δx4384ϕwiv+Δx53840ϕwv+...ϕC=ϕeΔx2ϕe+Δx28ϕeΔx348ϕe+Δx4384ϕeivΔx53840ϕev+...ϕE=ϕe+Δx2ϕe+Δx28ϕe+Δx348ϕe+Δx4384ϕeiv+Δx53840ϕev+...\begin{aligned} & \phi_W=\phi_w-\frac{\Delta x}{2}\phi'_w+\frac{\Delta x^2}{8}\phi''_w-\frac{\Delta x^3}{48}\phi'''_w+\frac{\Delta x^4}{384}\phi_w^{iv}-\frac{\Delta x^5}{3840}\phi_w^v+... \\ & \phi_C=\phi_w+\frac{\Delta x}{2}\phi'_w+\frac{\Delta x^2}{8}\phi''_w+\frac{\Delta x^3}{48}\phi'''_w+\frac{\Delta x^4}{384}\phi_w^{iv}+\frac{\Delta x^5}{3840}\phi_w^v+... \\ & \phi_C=\phi_e-\frac{\Delta x}{2}\phi'_e+\frac{\Delta x^2}{8}\phi''_e-\frac{\Delta x^3}{48}\phi'''_e+\frac{\Delta x^4}{384}\phi_e^{iv}-\frac{\Delta x^5}{3840}\phi_e^v+... \\ & \phi_E=\phi_e+\frac{\Delta x}{2}\phi'_e+\frac{\Delta x^2}{8}\phi''_e+\frac{\Delta x^3}{48}\phi'''_e+\frac{\Delta x^4}{384}\phi_e^{iv}+\frac{\Delta x^5}{3840}\phi_e^v+... \end{aligned}