网格_网格纸 - CSDN
  • 多重网格法简介(Multi Grid) 转自:http://blog.sina.com.cn/s/blog_4b700c4c0102drjb.html 多重网格法是一种用于求解方程组的方法,可用于插值、解微分方程等。 从专业角度讲多重网格法实际上是一种多分辨率...

    多重网格法简介(Multi Grid)

    转自:http://blog.sina.com.cn/s/blog_4b700c4c0102drjb.html

    多重网格法是一种用于求解方程组的方法,可用于插值、解微分方程等。

    从专业角度讲多重网格法实际上是一种多分辨率的算法,由于直接在高分辨率(用于求解的间隔小)上进行求解时对于低频部分收敛较慢,与间隔的平方成反比。就想到先在低分辨率(间隔较大)上进行求解,因为此时,间隔小,数据量小,进行松弛时的时空耗费小,而且收敛快,而且一个很重要的优点是在低分辨率上对初值的敏感度显然要低于对高分辨率的初值的要求。这一点是显而易见的,例如我们平时看一个很复杂的物体,在很远的地方,你可能就觉得它是一个点或一个球,但是在近处你就不能这么近似,或许发明多重网格法的人就是从这一基本生活常识发现的吧。

    多重网格法可以直接在低分辨率上以一个随意的初值进行计算,然后再进行插值,提高其分辨率,再在更高分辨率进行计算;也可以现在高分辨率以随意初值进行计算,得到一个结果,再将其限制(插值)到低分辨率去,再在低分辨率上进行解算,最终再从低分辨率经插值计算达到高分辨率。

    有关多重网格法的资料可以到这里下载:https://computation.llnl.gov/casc/people/henson/mgtut/ps/mgtut.pdf

    多重网格技术(multigrid solver)

    微分方程的误差分量可以分为两大类,一类是频率变化较缓慢的低频分量;另一类是频率高,摆动快的高频分量。一般的迭代方法可以迅速地将摆动误差衰减,但对那些低频分量,迭代法的效果不是很显著。高频分量和低频分量是相对的,与网格尺度有关,在细网格上被视为低频的分量,在粗网格上可能为高频分量。

    多重网格方法作为一种快速计算方法,迭代求解由偏微分方程组离散以后组成的代数方程组,其基本原理在于一定的网格最容易消除波长与网格步长相对应的误差分量。该方法采用不同尺度的网格,不同疏密的网格消除不同波长的误差分量,首先在细网格上采用迭代法,当收敛速度变缓慢时暗示误差已经光滑,则转移到较粗的网格上消除与该层网格上相对应的较易消除的那些误差分量,这样逐层进行下去直到消除各种误差分量,再逐层返回到细网格上。

    目前两层网格方法从理论上已证明是收敛的,并且其收敛速度与网格尺度无关[哈克布思,1988]。多重网格法是迭代法与粗网格修正的组合,经过证明,迭代法可迅速地将那些高频分量去掉,粗网格修正则可以帮助消除那些光滑了的低频分量,而对那些高频分量基本不起作用。
    在多重网格计算中,需要一些媒介把细网格上的信息传递到粗网格上去,同时还需要一些媒介把粗网格上的信息传递到细网格上去。限制算子Iih(i-1)h是把细网格i-1层上的残余限制到粗网格i层上的算子,最简单的算子是平凡单射,另外还有特殊加权限制;插值算子Iih(i-1)h是把粗网格i层上的结果插值到细网格i-1层上的算子,一般采用线性插值或完全加权限制算子。
    需要说明的是在多重网格迭代方法中,粗网格修正之前,细网格必须进行光滑迭代,以消除高频误差,使粗网格修正最有效地发挥其作用;在粗网格修正之后,不可避免的引入高频误差,所以也必须进行光滑迭代,不过高频误差能很快的通过光滑迭代消除。


    多重网格,最开始是用来求解椭圆型方程的。其原理为:数值求解的误差可以展开成级数的形式,从级数的的形式我们可以看出误差的振动分量有很多频段,只要消除了这些频段的误差,整个解也就收敛了。而网格,我们则可以看成一种滤波器,不同尺度的网格可以滤掉不同频段上的误差。如果网格一定,那么对于某些误差来说,可以很快滤掉,对于与其频段不匹配的误差来说,这种网格可能完全失败而根本无法滤掉。于是,人们开始采用多重网格技术进行数值求解,这样可以很快的滤掉各个频段上的误差,从而加速求解。上面所说的是多重网格理论上的技术,而实行多重网格技术却还有很多困难,首要的困难粗糙网格的生成,对于结构网格来说这是比较容易的,只需要进行相应的采样即可,对于非结构网格,粗网格的构造要麻烦的多,所以我说多重网格技术也是一种网格生成技术。对于我们自己编程序来说,非结构网格是一个难点,生成了非结构网格,再形成多重网格更是一个难点,与其相比,数值格式的确很简单。对于双曲型方程的多重网格方法大家见到过没有?其实,这方面的资料特别的少,这主要是有双曲型方程的本性和多重网格法的原理决定的。目前来说,双曲型方程的多重网格法,在理论上还有很多问题要解决,与实际的工程应用还有很大距离。

    多重网格对于椭圆型方程有比较完备的理论,尤其是对于线性椭圆型方程,其理论收敛速度为每步下降一个量级.对于双曲型方程,至今没有很完备的理论,最早是Brandtl,后来Ni应用于Euler方程求解,Jameson把该方法应用于他的Runge-Kutta显式推进技术,效率非常高.非结构网格,法国人走的比较快,采用聚合体技术,使得粗网格可以比较容易得到,收敛效果比较好

    对于euler方程这种双曲方程,虽然没有完备的multigrid收敛理论,但是却已经应用比较长时间了(从Jamson算起)。好像做CFD的暂时先实用化了,不管理论上如何。Fluent里面对于非结构网格叶实现了凝聚式的多重网格。刘超群的那本多重网格书里面就有一个multigrid用于叶栅跨音速无粘计算的例子,记得是4层网格,FVM,Roe格式配合四阶龙格库塔推进。一般来说,似乎都用多重网格加速显示推进的,因为显示步长受限制,少而有隐格式配合多重网格的。记得好像在王保国的叶栅计算的书里面,提到了隐式推进的多重网格,不记得他实现了没有。不过SIMPLE算法配合多重网格其实就是一种隐格式的多重网格了。

    Multi-grid是一种加速收敛技术,多为译‘多重网格'Multi-block是网格生成技术,多为译‘多块网格'


    AMG(代数多重网格) 直接根据离散后的Matrix生成"COARSER" MATRIX, 和网格不发生直接关系.上面讨论的是几何为基础的多重网格法. 几何多重网格法一般在粗网格上直接构造守恒方程, 对合适的问题, 收敛会很快. 缺点是对复杂几何形状, 粗网格很难生成. AMG 收敛也很好而且不受网格限制. AMG已经被很多CFD商用软件采用. 好象FLUENT就一直用AMG作为主求解器. 谁用过FLUENT的几何多重网格法?


    一种新的并行代数多重网格粗化算法

    <<计算数学 >>2005年03期 徐小文 , 莫则尧

    近年来,受实际应用领域中大规模科学计算问题的驱动,在大规模并行机上实现代数多重网格(AMG)算法成为数值计算领域的研究热点.本文针对经典AMG方法,提出一种新的并行网格粗化算法--多阶段并行RS算法(MPRS).我们将新算法集成到了高性能预条件子软件包Hypre中.大量数值实验结果显示,新算法适合更广泛的问题,相对其他并行粗化算法,明显地改善了AMG并行计算的可扩展性.对三维27点格式有限差分离散的Poisson方程,在64个处理机上并行AMG求解,含8百万个未知量,新算法比RS3算法减少了近60的三维Poisson方程,近32万个未知量,在16个处理机上并行AMG-GMRES求解,新算法所需的迭代步数大约为其他粗化算法的一半,显示了很好的算法可扩展性.参考资料:http://www.ilib.cn/Abstract.aspx?A=jssx200503011

    自适应网格方法概述

    自适应网格方法是指计算中,在某些变化较为剧烈的区域,如大变形、激波面、接触间断面和滑移面等,网格在迭代过程不断调节,将网格细化,做到网格点分布与物理解的耦合,从而提高解的精度和分辨率的一种技术。自适应网格希望在物理解变动较大的区域网格自动密集,而在物理解变化平缓区域网格相对稀疏,这样在保持计算高效率的同时得到高精度的解。自适应网格技术主要有移动网格方法和局部细化或粗化的网格方法。近三十年来,自适应网格方法一直引起国际学术界和各类应用部门的高度重视,并且成为网格方法研究的热点问题,发展了很多方法,在一些领域应用非常广泛。

      比如在成型过程模拟中,坯料遇到比较剧烈的变形时可以自动进行局部区域的网格细分,以提高这些部位计算的准确度,如图9-1所示。自适应网格技术对冲压成型是至关重要的,因为初始的冲压板材通常比较平坦、形状很简单,采用有限元网格离散化时,如果网格较粗,可能引起较大误差。但如果采用细密的有限元网格,将增加单元的总数,并且由于单元尺寸减小将降低极限时步长,增加计算的机时。虽然采用局部细分网格可以节省机时,但由于板料大变形和在模具中相对滑动,难以预测局部细分网格在初始状态板料上的位置,而且局部细分网格在前处理时也有很大麻烦。自适应网格技术刚好解决了这一问题,并在时间与精度上巧妙地取得了平衡。自适应网格技术提高了对零件的表面质量(表面缺陷、擦伤、微皱纹等现象)判断的准确性,并且可以节约大量的计算时间。

      9.2 h-adaptive方法和r-adapdve方法

      在LS-DYNA中,自适应网格划分方法可以分为两种:h-adaptive方法和r-adaptive方法。h-adaptive方法是指单元变形较大时,将单元细分为更小的单元以改善精度,目前仅适用于壳单元,主要用于金属成型模拟、薄壁结构受压屈曲等问题。

      在h-adaptive方法中,某些单元分割为更小的单元以改善计算精度,如图9-2所示,薄壁方形梁屈曲分析采用的是一级自适应网格划分计算。LS-DYNA中采用自适应网格方法的目的在于使用有限的计算资源获得最大的计算精度。用户设置好初始网格和自适应划分级别后,程序根据需要将某些单元进行分割。虽然这种方法并不能完全解决求解过程中的误差,但与固定网格相比,可以使用较少的单元和计算资源来尽可能地提高求解精度。

    多重网格、自适应网格和无网格

      h-adaptive方法中,某些单元由于精度需要细分为更小的单元,这个过程称为裂变。裂变后,新单元的边长尺寸是原来的1/2,通过各边中点以及单元质心,一个四边形单元可以分割为四个四边形单元,如图9-3所示。

    多重网格、自适应网格和无网格

    模拟高度复杂流动的自适应网格算法
    李椿萱, 杨弘炜
    北京航空航天大学流体力学研究所, 北京, 100083

    视频: 自适应网格划分http://v.youku.com/v_show/id_XNjA5NDM4MzI=.html

    无网格法(Mesh-less method)
    无网格方法(Mesh-less method)是在数值计算中不需要生成网格,而是按照一些任意分布的坐标点构造插值函数离散控制方程,就可方便地模拟各种复杂形状的流场。
    该法大致可分成两类:一类是以Lagrange方法为基础的粒子法(Particle method),如光滑粒子流体动力学(Smoothed particle hydrodynamics,简称SPH)法,和在其基础上发展的运动粒子半隐式(Moving-particle semi-implicit,简称MPS)法等;另一类是以Euler方法为基础的无格子法(Gridless methods),如无格子Euler/N—S算法(Gridless Euler/Navier-Stokes solution algorithm)和无单元Galerkin法(Element free Galerkin,简称EFG)等。
    无网格方法可以方便地利用坐标点计算模拟复杂形状流场计算,但不足之处是在高雷诺数流动时提高数值计算精度较困难。
    无网格方法中比较常见的还有径向基函数方法(Radious Basis Function),主要使用某径向基函数(如(MQ)f(r)=r^5)的组合,来逼近原函数。吴忠敏院士在这方面有比较突出的工作。参考资料:
    http://baike.baidu.com/view/1259259.htm

    无网格法
    http://zhanxuez.blog.163.com/blog/static/20196272200801221934860/

    近几十年来,有限元法已成为计算力学中解决工程问题的主要数值手段,然而随着其应用范围的扩展,其固有的一些缺陷也日益突出。在金属冲压成形、高速碰撞、流固耦合等涉及特大变形的领域中,基于拉格朗日法的有限元网格可能产生严重的扭曲,甚至使得单元的雅可比行列式为负值,不仅在计算中需要网格重构,而且严重地影响解的精度;对高速冲击等动态问题,显式时间积分的步长取决于有限元网格的最小尺寸,因而网格的扭曲将使得时间积分步长过小,大幅度地增加了计算工作量;对裂纹的动态扩展问题,由于裂纹的扩展方向不能事先确定,因而在计算过程中需要不断地重新划分网格以模拟裂纹的动态扩展过程。由于有限元近似基于网格,因此必然难于处理与原始网格线不一致的不连续性和大变形。网格重构不仅计算费用昂贵,而且会损害计算精度。

    鉴于这种缺陷,近几年来国际上许多著名的计 算力学学者,如 T. Belytschko, O.C. Zienkiewicz, S.N. Atluri, J.T. Oden, W.K. Liu 等都对无网格方法表现出了极大的兴趣,并进行了大量的研究工作。无网格方法采用基于点的近似,可以彻底或部分地消除网格,不需要网格的初始划分和重构,不仅可以保证计算的精度,而且可以大大减小计算的难度。然而,由于目前的无网格近似一般没有解析表达式,且大都基于伽辽金原理,因此计算量很大,要超出传统的有限元法;另外,无网格近似大都是拟合,因此对于位移边界的处理比较困难,多采用拉格朗日乘子法处理。

    目前已提出了十余种无网格法,其主要区别在于离散微分方程的方法(如伽辽金法、配点法、最小二乘法、彼得洛夫-伽辽金法等)和建立近似函数的方法(移动最小二乘近似、核近似、重构核质点近似、单位分解法、hp云团法、径向基函数法、点插值法等)。

    无网格法
    著 译 者:张雄 刘岩
    出版日期:2004-8-1 上架时间:2004-9-9
    出 版 社:清华大学出版社 ISBN:730208467X
    市 场 价: ¥56.00
    本书以紧支试函数加权残量法为主线,系统地论述了目前现有的各种无网格方法的基本原理以及它们之间的区别与联系,建立了一些新型有效的无网格方法,如最小二乘配点无网格法、加权最小二乘无网格法、伽辽金最小二乘无网格法和伽辽金配点无网格法等。书中给出了作者用C++研制的面向对象的无网格法程序OMLL,各章也都给出了相应的MATLAB程序,以帮助读者理解各种无网格方法的程序实现过程。
    本书可供航空航天、力学、机械、土木及水利工程等方面的科学技术人员以及相关专业的高年级大学生、研究生和教师参考使用。
    前 言
      近几十年来有限元法取得了巨大的发展,成为工程数值分析的有力工具,解决了一大批有重大意义的科学和工程问题。然而,有限元法在分析高速撞击、金属加工成形、动态裂纹扩展、流固耦合和应变局部化等涉及特大变形的问题时也遇到了因网格畸变而产生的许多困难。
      与有限元法相比,无网格法的近似函数不依赖于网格,因此在分析涉及特大变形的问题中具有很大的优势。近十年来无网格法的研究受到了高度重视,成为国际计算力学界的研究热点之一。在国家自然科学基金的资助下,国内许多单位也都对无网格法展开了研究。
      目前无网格法的研究仍然处于起步阶段。国际上已提出了十余种无网格方法,研究论文主要散见于各类杂志、会议论文集中。目前国际上只出版了两本有关无网格法的专著,其中美国加州大学SN Atluri教授于2002年出版了专著The Meshless Local Petrov-Galerkin(MLPG)Method,系统地介绍了其提出的无网格局部彼得罗夫伽辽金法。新加坡国立大学刘桂荣博士也于2002年出版了Mesh Free Methods:Moving Beyond the Finite Element Method一书。
      本书以作者所在课题组在国家自然科学基金资助下取得的研究成果为基础,以紧支试函数加权残量法为主线,系统地论述了目前现有的各种无网格方法的基本原理以及它们之间的区别与联系,在此基础上建立了一些新型有效的无网格方法,如最小二乘配点无网格法、加权最小二乘无网格法、伽辽金最小二乘无网格法、伽辽金配点无网格法等。
      本书共分为8章。第1章简要论述无网格法的发展过程与现状,并对无网格法进行了分类;第2章论述了紧支试函数加权残量法的基本原理,并将其作为本书论述各种无网格法的主线;同时论述了目前无网格法中所采用的各种紧支近似函数,包括移动最小二乘近似、核函数近似和重构核近似、单位分解近似和hp云团、径向基函数和点插值法等;第3章论述了伽辽金型无网格法,如无单元伽辽金法(EFG)、重构核粒子法(RKPM)、hp云团法、单位分解法等的基本原理、各种积分方案、本质边界条件的处理方法、无网格块体-夹层模型以及有限元和无单元伽辽金法的耦合问题;第4章论述配点型无网格法,如有限点法(FPM)、最小二乘配点无网格法、伽辽金配点无网格法、Hermite配点法、光滑质点流体动力学法(SPH)、径向基函数无网格法、双重网格配点法等;第5章简要地论述了基于局部弱形式和边界积分方程的无网格法,如无网格局部彼得罗夫伽辽金法(MLPG)、局部边界积分方程法(LBIE)、边界节点法(BNM)、杂交边界点法(HBNM)、边界粒子法(BPM)等;第6章论述最小二乘型无网格法和伽辽金最小二乘无网格法;第7章论述面向对象的无网格法程序设计方法,并给出了作者所在课题组用C++研制的面向对象的无网格法程序OMLL(可从http://www.dynamics.tsinghua.edu.cn/xzhang/OMLL处下载);第8章简要地论述了无网格法的应用情况。另外各章都给出了相应的MATLAB程序,以帮助读者理解各种无网格方法的程序实现过程。
      本书在编写过程中,得到了清华大学陆明万教授的热情支持。大连理工大学钟万勰院士和北京大学袁明武教授对本书的出版给予了重要的支持。本课题组的博士生宋康祖、潘小飞、邢向华,硕士生陶三明、刘小虎、黄建明、苗红宇、胡炜等也为本书作了有益的贡献。作者对他们表示衷心的感谢。
      我们在无网格法方面的研究工作先后三次受国家自然科学基金的资助(59509002:高边坡稳定性分析方法;19772024:紧支函数加权残量法的研究及其应用;10172052:高速碰撞问题的新型高效三维无网格法的研究),在此表示衷心的感谢。
      刘岩负责第3章第5节、第5章和第8章的编写,张雄负责其余部分以及全书的统稿工作。由于水平限制,书中难免有许多不足和不当之处,热切希望读者和同行专家批评指正。
      作 者
      2003年11月于清华园
    第1章 绪论
    第2章 紧支试函数加权残量法
    2.1 加权残量法
    2.2 紧支近似函数
    2.3 一维移动最小二乘近似的MATLAB程序
    第3章 伽辽金型无网格法
    3.1 基本原理
    3.2 积分方案
    3.3 位移边界条件的处理
    3.4 无网格块体-夹层模型
    3.5 FEM和EFG的耦合
    3.6 伽辽金型无网格法程序流程图及一维MATLAB程序
    第4章 配点型无网格法
    4.1 配点型无网格法的基本原理
    4.2 配点型无网格法的稳定方案
    4.3 最小二乘配点无网格法
    4.4 伽辽金配点无网格法
    4.5 Hermite配点法
    4.6 双重网格配点法
    .4.7 光滑质点流体动力学方法
    4.8 配点型无网格法程序流程图及一维MATLAB程序
    第5章 基于局部弱形式和边界积分方程的无网格法
    5.1 局部弱形式和局部边界积分方程
    5.2 MLPG和LBIE方法的实现
    5.3 边界节点法
    5.4 杂交边界点法
    5.5 边界粒子法
    5.6 MLPG程序流程图和一维MATLAB程序
    第6章 最小二乘型无网格法
    6.1 基本原理
    6.2 最小二乘无网格法的进一步研究
    6.3 伽辽金最小二乘无网格法
    6.4 动态问题的最小二乘无网格法
    6.5 热传导问题的最小二乘无网格法
    6.6 最小二乘无网格法的程序流程及一维MATLAB程序
    第7章 面向对象的无网格法程序设计方法
    7.1 矩阵类
    7.2 求解域类(Domain)
    7.3 无网格近似函数类
    7.4 方程类
    7.5 弹性静力学问题类(ElaStatocs)
    7.6 无网格方程基类(MeshlessEquation)
    7.7 计时器类(Clock)
    7.8 伽辽金型无网格法类(EFGM)
    7.9 最小二乘无网格法类(LeastSquare)
    7.10 配点型无网格法类(DlrectCollocation)
    7.11 主控类(Run)
    第8章 无网格法的应用
    8.1 无网格法在大变形问题中的应用
    8.2 无网格法在断裂力学问题中的应用
    8.3 无网格法在冲击碰撞等问题中的应用
    8.4 无网格法在计算流体动力学(CFD)中的应用
    8.5 无网格法在其他非力学问题中的应用简述
    参考文献


    如何评估网格密度

    有限元分析,也称FEA,它把结构分解成离散的单元,然后组合这些单元解得到最终的结果,它是一种常用的近似技术。其结果的精度取决于单元的尺寸和分布,粗的网格往往其结果偏小,甚至比实际结果低20%到40%。所以必须保证单元足够小、考虑模型更多细节,以得到较好的结果。

    由于粗的网格得到的结果是非保守的,因此我们要认真查看结果,以确定它与实际差多远。很幸运,有几种技术帮助分析人员来判断其误差有多少。有些很早就被采用了,而有些是近几年才发展起来的。

    最早和最明显的技术是用分析人员对结果判断的经验来估计网格的质量,以确定网格是否合理,如通过看云图是否与物理现象相一致,如果云图线沿单元的边界或与实际现象(如:全息技术、脆性涂层、或其他实验技术)不一致,那么很有可能结果是不正确的。你可以观看云图,回忆一下是否与先前某种模型分析相似,而在那儿在后续的分析中发现是某个量的错误。你可以运用你的分析经验和你该问题的了解确定计算机上看到的结果是否达到精度,当然这种方法极端主观。

    更多的评价网格误差的方法是通过比较平均的节点结果和不平均的单元结果,ANSYS提供了两条显示结果的命令:PLNS、PLES,前者是显示平均的节点结果、后者是显示不平均的单元结果。它们的差别是什么?PLNS命令是计算节点结果,它是通过对该节点周围单元结果的平均得到的,分析结果是基于单元高斯积分点的值,然后外插得到到每个节点,因此在给定节点周围的每个单元都由自己单元计算得到,所以这些节点结果通常是不相同的,PLNS命令是在显示结果前将每个节点的所有结果进行了平均,所以看到的云图图是以连续的方式从一个单元过渡到下一个单元。而PLES命令不对节点结果平均,所以在显示云图时单元和单元之间是不连续的。这不连续的程度在网格足够密的时候回很小或不存在,而在网格较粗时会很大。由于PLNS结果是一个平均值,所以它总是比用PLES命令得到的结果要小,它们的差可以较好的表示网格的密度,而且,由于PLNS是一种平均结果,所以它比PLES命令欠保守,对结果估计不足。由PLES命令显示的结果比较保守,而且要比PLNS命令得到的结果精确。

    在最近几年,ANSYS提供了两个误差估计显示选项,SDSG是针对结果问题的、TDSG是针对热问题的。SDSG和TDSG提供了对每个单元的绝对误差估计,可以用PLES命令来显示,SDSG和TDSG可以很好的估计误差。你不仅可以用PLES命令来显示,你也可以用ETAB命令把他们调入单元表中,然后用PLET命令显示它们,通过把SDSG和TDSG储存在单元表中,你可以将其它结果也存入单元表中,然后将SDSG或TDSG与它相加,得到考虑网格误差得到的结果有多大。下面给出了如何使用它的一个例子:

    命令:ETAB,SDSG,SDSG

    含义:储存SDSG值到单元表

    命令:ETAB,VM,S,EQV

    含义:储存Vo* ***es应力到单元表

    命令:SADD,VMMAX,VM,SDSG

    含义:将SDSG和Vo* ***es相加,结果储存在VMMAX中

    命令:PLET,VMMAX

    含义:显示Vo* ***es应力最大的估计值

    一种更新的估计网格密度的方法是比较用PowerGraphics得到的结果和用Full Graphics得到的结果,这种技术仅限于实体模型采用四面体单元的情况,但它十分有效和精确。

    为了了解它的原理,让我们来看一下PowerGraphics和Full Graphics的差别。在早期的ANSYS版本中,所有的结果显示都用叫做Full Graphics的技术来得到的,它是考虑共节点的所有单元的结果,而PowerGraphics是ANSYS5.1版本开始引入的技术,它是通过只显示暴露在表面的单元的数据来加快显示速度。它与Full Graphics不一样,后者考虑共节点的所有单元数据,不论它是否暴露在表面与否。在后处理分析结果时,只有当所有与表面相关的单元都暴露在表面时, PowerGraphics和Full Graphics显示才相同,这在六面体单元时总成立,然而,四面体网格中有这样的单元,它与表面接触的可能只有一个节点,那么 PowerGraphics在计算结果时就忽略了这些单元的值。这就是为什么用

    PowerGraphics 显示的结果要比Full Graphics时的要来得高,显然用PowerGraphics显示的结果要比Full Graphics来得更精确,只要所选的单元的最大值就在外部,并且不存在奇异性。不管最大值是否在外部和内部,如果某种网格下用 PowerGraphics和Full Graphics得到结果不一样,说明这种网格密度是不够的。

    尽管Full Graphics通常比PowerGraphics的精度差,但它有一个用PowerGraphics得不到的好处,Full Graphics在显示结果时会显示结果得上下限,SMNB和SMXB,一个比最大值大的值和一个比最小值小的值。经验告诉我们SMNB和SMXB有时是过保守的,但可以说是当网格足够密的时候SMNB和SMXB的值应该接近实际的最小值和最大值。顺便提一下,当你从PowerGraphics切换到 Full Graphics时,你必须用命令ERNORM,ON告诉ANSYS要包含网格误差效应,否则SMNB和SMXB将不显示。

    以上的方法可以帮助你在判断结果时做出明智的决策,在你查看结果时必须把它记在脑子中,因为你不仅要对得到问题的分析结果,你也要对结果的精度和可用度负责。

    总之,在考查结果时记住以下的几条原则,首先,用你的经验去判断所得到的云图是否与你理解的物理现象一致;其次,不平均的节点结果(PLES)通常要比平均的节点结果(PLNS)大,所以它要偏保守;第三,PowerGraphics的结果一般比Full Graphics的结果精度高;第四,SMNB和SMXB的值如果接近最小和最大值时,网格误差较小。


    动网格参数设置


    这个动网格有两种方法实现:

    1.使用结构网格,将计算域分为三块,以板左,右侧边为分界线,划分为左中右三个区域,划分结构网格;区域之间使用sliding mesh,板运动的网格更新采用弹簧近似光滑方法以及动态分层方法;

    2.整块划分非结构网格,也就是你这样的,需要注意的是除了弹簧近似光滑方法外,还要使用网格局部重新划分方法,也就remeshing,结合尺寸函数,能得到很好的网格质量。

    具体设置:

    打开了Dynamic Mesh Parameters 窗口,在Models中只选取Dynamic Mesh,本例的网格类型为三角形单元,要实现的运动为小幅度的转动,因此选用的动网格更新方法为Smoothing+Remeshing;开始依次对这两种更新方法进行参数设定:


    Smoothing中的参数设定:


    Spring Constant Factor(弹簧倔强系数),该值设定为一个较小的值,在0.01到0.1之间,本例选取0.08;


    Boundary Node Relaxation(边界节点松弛),设定为0.5;


    Convergence Tolerance(收敛判据),保持默认的0.001;


    Number of Iterations(迭代次数),保持默认的20;


    Remeshing中的参数设定:


    为了得到较好的网格更新,本例在使用局部网格重新划分方法时,使用尺寸函数,也就是Remeshing+Must Improve Skewness+Size Function的策略。


    将Minimum Length Scale及Maximum Length Scale均设置为0,为了使所有的区域都被标记重新划分;


    Maximum Cell Skewness(最大单元畸变),参考Mesh Scale Info…中的参考值0.51,将其设定为0.4,以保证更新后的单元质量;


    Size Remesh Interval(依照尺寸标准重新划分的间隔),将这个值设定为1,在FLUENT,不满足最大网格畸变的网格在每个时间步都会被标记,而后重新划分,而不满足最小,最大及尺寸函数的网格,只有在Current Time=(Size Remesh Interval)*delta t的时候,才根据这些尺寸的标准标记不合格的单元进行重新划分,为了保证每步的更新质量,将其修改为1,就是每个时间都根据尺寸的标准标记及更新网格。


    Size Function Resolution(尺寸函数分辨率),保持默认的3;


    Size Function Variation(尺寸函数变量):建议使用一个小值,在0.1到0.5之间,本例将其设置为0.3;


    Size Function Rate(尺寸函数变化率),保持默认的0.3。


    地形自适应网格生成技术
    马建明
    中国水利水电科学研究院防洪抗旱减灾研究所信息与灾害风险研究室

    在江河防洪中,常常涉及蓄滞洪区运用,堤防溃决后洪水在堤防保护区内的演进分析等。在我国,大型堤防保护区一般均位于流域中、下游平原区,人口、资产密度高,并且有城镇等重要保护对象,一旦发生堤防溃决需要在很短的时间内分析洪水的走势,并作出决策,同时还需要实时评估抢险方案,如修建隔堤等的效果。此时,为了应急指挥决策,需要快速动态生成计算网格,体现应急工程措施位置并分析其效果。为了能够应对随时随地可能发生的洪水风险,需要我们提前进行规划,制定防御方案。应用二维水动力学数值模拟方法预测各种可能出现的洪水风险情景,可以为防御方案制定等提供参考依据。

    在洪水波演进过程中,地形是主要影响因素之一,根据计算区域内地形变化自动调整网格分布,在子堤、隔堤等地形突变,形成阻水建筑的地方,使计算网格边线与其严格重合,而对于地势变化较连续的区域自动控制网格密度,在地势平坦区域适当加大网格尺寸,而在地形急剧变化区域则适当加密网格,从而使计算模型和计算结果能更加细致和精确地反映客观地形地貌。

    本文重点探讨江河防洪模拟中地形自适应的网格自动生成方法,针对防洪模拟中突变地形自适应,借鉴己有的边界自适应方法来实现,而对缓变地形自适应问题则提出通过曲面样条函数插值,获得任意点的地形变化梯度,从而实现在网格生成过程中根据地形变化自动调整网格尺度。综合起来则实现了地形自适应网格生成。


    网格生成技术

    在计算流体动力学中,按照一定规律分布于流场中的离散点的集合叫网格(Grid),分布这些网格节点的过程叫网格生成(Grid Generation)。网格生成对CFD至关重要,直接关系到CFD计算问题的成败。1974年Thompson等提出采用求解椭圆型方程方法生成贴体网格,在网格生成技术的发展中起到了开创作用。随后Steger等又提出采用求解双曲型方程方法生成贴体网格。但直到二十世纪八十年代中期,相比于计算格式和方法的飞跃发展,网格生成技术未能与之保持同步发展。因而从二十世纪八十年代开始,各国计算流体和工业界都十分重视网格生成技术的研究。二十世纪九十年代以来迅速发展的非结构网格和自适应笛卡尔网格等方法,使复杂外形的网格生成技术呈现出了更加繁荣发展的局面。现在网格生成技术已经发展成为CFD的一个重要分支,它也是计算流体动力学近二十年来一个取得较大进展的领域。也正是网格生成技术的迅速发展,才实现了流场解的高质量,使工业界能够将CFD的研究成果——求解Euler/NS方程方法应用于型号设计中。

    随着CFD在实际工程设计中的深入应用,所面临的几何外形和流场变得越来越复杂,网格生成作为整个计算分析过程中的首要部分,也变得越来越困难,它所需的人力时间已达到一个计算任务全部人力时间的60%左右。在网格生成这一“瓶颈”没有消除之前,快速地对新外形进行流体力学分析,和对新模型的实验结果进行比较分析还无法实现。尽管现在已有一些比较先进的网格生成软件,如ICEM、Gridgen、Gambit等等,但是对一个复杂的新外形要生成一套比较合适的网格,其需要的时间还是比较长,而对于设计新外形的工程人员来说,一两天是他们可以接受的对新外形进行一次分析的最大周期。CFD已经成功地缩短了新外形设计中所需要的风洞实验时间,但在CFD对任意外形成为一种适时的分析工具以前,新外形设计中所需要的风洞实验时间依然非常巨大。要将CFD从专业的研究团体中脱离出来,并且能让工程设计人员应用到实际的设计中去,就必须首先解决网格生成的自动化、即时性问题,R.Consner等人在他们的一篇文章中,详细地讨论了这些方面的问题,并提出:CFD研究人员的关键问题是“你能把整个设计周期缩短多少天?”。而缩短设计周期的主要途径就是缩短网格生成时间和流场计算时间。因此,生成复杂外形网格的自动化和及时性已成为应用空气动力学、计算流体力学最具挑战性的任务之一。

    当今,有众多研究人员对复杂外形的网格生成技术从分区结构网格、非结构网格和笛卡尔网格三个不同的方向展开研究。

    1.2.1分区结构网格方法

    分区结构网格方法将原始的物理区域按不同的空间拓扑结构分成若干区域块,每个单块网格的拓扑结构简单,易于生成贴体网格,然后合并这些单域贴体网格来形成复杂外形的空间网格。常用的传统单域贴体网格生成方法可分为代数网格生成方法、求解椭圆微分方程生成方法和求解双曲微分方程生成方法,以及从求解椭圆微分方程生成方法发展而成的求解抛物微分方程生成方法。近十多年来发展了不少新的分区结构网格。比较成熟的分区结构网格方法有:
    1)分区对接 网格方法。
    2)分区重叠网格方法。
    它们都属于分区网格生成方法,且与流场的分区计算方法以及并行计算方法密切相关,并构成这些算法的基础。对于分区对接网格方法,虽然网格块之间的关系和数据交换比较简单,但相连网格块之间必须共用网格线(二维)或网格面(三维),为了提高计算的精度,要求块与块之间的连接应尽量光滑,这给网格生成带来诸多限制和不便。随着分区重叠网格方法的引入,网格线(面)的公用限制被打破,网格生成的难度得以降低,但随之而来的是网格块之间数据交换变得复杂,对于三维复杂外形绕流,划分的子块可能上百块,合理处理块与块之间的边界就变得非常繁琐,往往需要付出大量的手工劳动。

    采用结构网格方法的优势在于它易于生成物面附近的边界层网格、有许多成熟的计算方法和比较好的湍流计算模型,因此它仍然是目前复杂外形飞行器气动力数值模拟的主要方法,计算技术最成熟。但是比较长的物面离散时间、单块网格边界条件的确定以及网格块之间各种相关信息的传递,又增加了快速计算分析的难度,而且对于不同的复杂外形,它得构造不同的网格拓扑结构,因而无法实现网格生成的“自动”,生成网格费时费力。其发展方向是朝着减少工作量,实现网格的自动生成和自适应加密,具有良好的人机对话及可视化,具有与CAD良好的接口,并强调更有效的数据结构等方面进一步发展。

    1.2.2非结构三角形网格方法

    复杂外形网格生成的第二方向是最近应用比较广泛的非结构三角形网格方法,它利用三角形(二维)或四面体(三维)在定义复杂外形时的灵活性,以 Delaunay法或推进波阵面法【27】为基础,全部采用三角形(四面体)来填充二维(三维)空间,它消除了结构网格中节点的结构性限制,节点和单元的分布可控性好,因而能较好地处理边界,适用于模拟真实复杂外型。非结构网格生成方法在其生成过程中采用一定的准则进行优化判断,因而能生成高质量的网格,很容易控制网格的大小和节点的密度,它采用随机的数据结构有利于进行网格自适应。一旦在边界上指定网格的分布,在边界之间可以自动生成网格
    ,无需分块或用户的干预,而且不需要在子域之间传递信息。因而,近年来非结构网格方法受到了高度的重视,有了很大发展。

    非结构网格方法的一个不利之处就是不能很好地处理粘性问题,在附面层内只采用三角形或四面体网格,其网格数量将极其巨大。现在比较好的方法就是采用混合网格技术【45】,即先贴体生成能用于粘性计算的四边型或三棱柱网格,然后以此为物面边界,生成三角形非结构网格,但是生成复杂外型的四边形或三棱柱网格难度很大。

    非结构网格方法的另一个不利之处就是对于相同的物理空间,网格填充效率不高,在满足同样流场计算条件的情况下,它产生的网格数量要比结构网格的数量大得多(一个长方体要划分为5个四面体)。随机的数据结构也增加了流场参数交换的时间,因此此方法要求较大的计算机内存,计算时间长。在物面附近,非结构网格方法,特别是对于复杂外形如凹槽、细缝等处比较难以处理。

    非结构网格与结构网格一样都属于贴体网格,模型表面网格的好坏直接关系到空间网格的质量,因而它们的模型表面网格必须同时与网格拓扑结构和当地的几何外形特性相适应,为了更好地适应其中一方面,有时不得不在另一方面作出让步,因而往往顾此失彼。因此,在生成非结构网格和结构网格时,处理模型表面又成为一个关键而费时的工作。

    1.2.3笛卡尔网格方法
    笛卡尔网格是CFD计算中最早使用,也是最易生成的一种网格,它不同于传统的贴体网格,笛卡尔网格中的单元基本按照笛卡尔坐标方向(X,Y,Z)排列,流场可以采用有限体积法进行模拟计算,在与模型表面相交的单元处需要给出特殊的处理,为此,必须准确计算和判断网格单元与模型表面的相交情况。笛卡尔网格可以通过简单的再划分来达到准确拟合几何物面的目的,当前,采用笛卡尔网格的计算方法虽不如采用前两种网格的计算方法那样众多,但该方法具有网格建立简单、快速、数据结构简单、网格自适应容易等特点【84】,而且可以实现网格生成的自动化而在近几年受到人们更多的关注。笛卡尔网格技术的发展应用为CFD的非专业化、工程实际应用化提供了一种新的思路,使为工程设计人员提供操作简单、计算快速的CFD分析软件成为可能。

    近年来人们开始采用自适应(AMR:Adaptive Mesh Refinement)的笛卡尔网格来计算复杂几何形状的流场,即在原始的均匀笛卡尔网格基础上根据几何外形特点或流场特点在局部区域内不断进行网格细化,得到精度符合要求、分布又是最理想的非均匀笛卡尔网格,达到准确模拟外形和捕捉激波等目的。相比于结构网格和非结构网格,采用笛卡尔网格和实现网格自适应具有以下优点:

    1.由于笛卡尔网格的生成不是从模型表面出发,而是采用先空间后物面的方式,模型表面网格仅仅用于物理外型的描述,因此对模型表面网格的要求不如结构网格和非结构网格那样严格,对于多部件模型,可以采用模型部件分开描述的方式,容易重新移动、旋转部件,而且不用考虑部件之间的相互关系,可以一次性生成计算所需的计算网格,使网格生成过程简单、省时。

    2.相比于贴体结构网格,不需要从物理空间向计算空间的转换,不需要在分块网格之间交换复杂的流场信息,使流场计算简单,节约计算时间。流场计算中实现自适应也比较容易,较简单。

    3.笛卡尔网格不存在分区结构网格中不同外形有不同的网格拓扑结构的要求,网格生成过程容易统一,对模型表面处理的依赖程度较低,因而容易写出通用的网格生成程序,网格生成过程中不需要人为干预,因而可以实现网格生成的自动化。

    4.笛卡尔网格对流场空间的填充效率高,能够缩短流场计算时间。相对于贴体结构网格和非结构网格,笛卡尔网格虽然在数据交换、数据结构、空间网格生成等方面有优势,但它在生成贴近物面的一层网格(物面层网格)时却需要做大量的工作,换句话说,在编制笛卡尔网格生成程序时,以处理物面层网格的复杂性、多样性,替代了分区结构网格中网格拓扑结构的复杂性、多样性。但一个非常重要的结果是它可以实现网格生成的自动化。因此,近年来笛卡尔网格生成方法受到人们的重视,有了快速的发展。



    §1.3 笛卡尔网格生成方法的发展

    1.3.1 对笛卡尔网格生成方法发展的简单回顾
    在1976年,Reyhner率先采用非贴体的笛卡尔网格模拟绕进口的跨音速流动,在他发表的论文中,他预见性地深入讨论了发展笛卡尔网格生成方法所要面临的许多问题,包括准确地确定物面边界条件、相邻网格单元间光滑过渡和网格自适应等问题【1】。1978年,Purvis和Burkhalter将笛卡尔网格与有限体积法结合起来求解全速势方程,成功地求解了轴对称外形问题【2】,这种思想被Wedan和South所发展,并应用于多段翼型和内流问题【6】。在1985年,Clarke、Hassan、Salas将Wedan和South的工作再向前推进了一步:采用Runge-Kutta时间推进法求解Euler方程【13】。在1986年,Grossman and Whitaker采用笛
    卡尔网格和全速势方程求解三维圆锥体的超音速问题【14】,其中值得注意的是,他们给出了解决薄体问题的一种方法。在 1987年,Gaffney、Hassan和Salas首次采用笛卡尔网格和Euler方程求解三维机翼问题【15】。在1988年,Choi和 Grossman成功地应用二维矢通量分裂法求解Euler方程,解决了喷口处超音速流场模拟问题【20】。

    在这前十年的后一阶段,采用笛卡尔网格进行跨音速数值模拟不如采用贴体结构网格和非结构网格那样广泛。一个例外就是波音公司开发的TRANAIR软件,该软件首次对任意外形采用笛卡尔网格求解三维全速势方程。

    除了TRANAIR外,早期针对笛卡尔网格的各种应用都不包含网格自适应,因此,一个很大的问题就是为了捕捉几何外形细节和流场特征,在实际应用中必然存在一些网格单元效率低的特点,这增加了计算过程中对CPU和内存的要求。当前,随着自适应笛卡尔网格的应用,人们在精确的边界条件、稳定性、矢量化、高效、内存需求和高效的数据结构等方面展开了更广泛的研究。在LeVeque、Berger的一系列文章中【21,24,29,30】,详细地阐述了采用自适应笛卡尔网格时的各种物面边界条件,并给出了包含强激波的二维无粘非定常流情况下的处理结果。在Bell、Colella和Pembe的文章中也有关于非定常数值模拟的论述
    【32,43】。在1989 年,Epstein、Luntz和Nachson在其文章中描述了采用重叠笛卡尔网格用多重网格法求解三维流场【26】。在1991年,De Zeeuw和Powell提出了一种在求解二维定常跨音速Euler方程情况下进行个别单元再划分的方法【33】。Morinishi提出了一种针对笛卡尔网格的求解二维Euler方程的有限差分方法,并用Runge-Kutta积分法计算了多段翼的跨音速流场【36】。在1992年,Quirk提出了对用Bezier曲线描述的外形,采用自适应笛卡尔网格求解二维Euler方程的方法【35,53】。Coirier和Powell采用笛卡尔网格方法计算了Ringleb流,并将结果与采用贴体结构网格的计算结果进行了对比【47】。

    Melton、Enomoto和Berger将CAD/CAM软件与采用笛卡尔网格的计算软件结合应用,使不需生成模型表面网格而直接生成空间网格成为可能【48】。现在已有采用笛卡尔网格方法,而且形成比较成熟的商业软件,如CART3D、MGAERO,在其中包含了基于部件几何定义、多重网格Euler方程求解和用户指定参数网格自适应等内容【34,50,51,52】。Landsber、Young和Boris已将笛卡尔网格方法应用到三维外形的并行计算【72】。近期,Z .J.WANG、R.F.CHEN等采用直角/三棱柱网格和粘性笛卡尔网格求解Navier-Stokes方程【78,79,80,81,82】。由于笛卡尔网格生成可以做到自动化和实时性,象美国NASA等航天航空机构已对笛卡尔网格生成方法有了相当的重视。在国外,有如下团体在从事笛卡尔网格生成方法的研究和开发:
    学院:
    Courant Institute group led by Prof. Marsha Berger
    Florida State University group led by Dr. Ching Jen Chen
    UC Berkeley group led by Prof. Phil Colella
    U of Michigan group led by Prof. Ken Powell
    James Quirk at GALCIT
    Prof. Frank Evans at the University of Colorado, Boulder
    商业团体:
    MGAERO from Analytical Methods, Inc.
    TRANAIR Development Group at Boeing - NAS 92/93
    Dr. William Coirier at CFDRC
    Dr. Steve Karman, Jr., at Lockheed - NAS 94/95
    政府部门:
    Michael Aftosmis at NASA Ames
    Dr. Jay Boris at NRL
    Dr. John Melton at NASA Ames

    1.3.2 直角/三棱柱混合网格、“粘性”笛卡尔网格技术
    生成笛卡尔网格的难点在于物面层网格的处理,在早期,人们在处理物面层网格时,直接通过笛卡尔网格的细分,用相对较细的锯齿型台阶来模拟物面,此时就不存在笛卡尔网格单元与物面的相交问题,但为了更进一步精确地模拟物面和保证网格单元的平滑过度,物面附近的网格单元就会很小,因而整个网格数量就很大。这种早期方法的另一个不足就是在计算时会有“台阶”效应,有时导致计算不稳定。

    后来,人们开始采用求交切割的方法【24,44,48,58,68,69】,切割法首先在整个流场中生成笛卡尔网格,第二步去除物面内部的网格单元,第三步对与物面相交的网格单元进行切割处理,然后针对物面几何特征,如相邻两个表面三角形法向矢量的夹角的大小等,进行网格自适应划分,重复第二、三、四步,直到达到要求。采用切割的方法产生的物面层网格具有任意的形状,而且容易产生非凸的、很小的网格单元,这给网格标记、法向计算、求中心点以及对控制体采用有限体积法积分求解时,带来很大的不便,很小的网格单元也会带来求解的不稳定,而此方法最大的缺点就是不适合解决粘性问题,处理几何重叠、薄体等问题时比较困难。

    为了解决粘性问题,Karman【60,62】和Wang【74】分别提出了直角/三棱柱混合网格解决方法,Karman提出的是自适应的笛卡尔网格/固定的三棱柱网格方法,此方法的不足点在于固定的三棱柱网格部分抵消了自适应笛卡尔网格的有效性,为此Wang提出了自适应的笛卡尔网格/自适应的三棱柱网格方法,实现了用于二维粘性计算网格的自动生成【78】。生成直角/三棱柱混合网格时,同样采用切割的方法,因此同样具有切割法的缺点,即对物面描述的封闭性要求,产生不规则、非凸、小体积网格单元等等。

    现在一种很有发展前景的方法是采用“投影”的方法,生成可用于粘性计算的“粘性”笛卡尔网格【75,76,77】。该方法中表面描述仅仅用于笛卡尔网格单元的划分和投影,物面层网格在笛卡尔网格前锋面向表面进行投影时自动产生,所生成的物面网格具有与前锋面相同的网格分布结构,只要将物面层网格在法向进行加密划分,就可得到用于粘性计算的“粘性”笛卡尔网格。而且对几何重叠、薄体等难题有很好的处理能力。现在Wang等人已经将此方法推广到采用2N 数据结构、各向异性自适应笛卡尔网格等方面【79】。

    1.3.3 笛卡尔网格生成方法的发展方向
    笛卡尔网格生成方法经过二十多年的发展,在工程设计过程中得到了成功的应用。

    目前笛卡尔网格生成方法正向以下几个方面发展:
    发展各向异性的笛卡尔网格,以更利于网格自适应、更真实地模拟外形和提高网
    格 填充效率,减少网格数量。
    发展“粘性”笛卡尔网格或笛卡尔网格与三棱柱网格的混合网格,用于模拟粘性
    流场。
    发展应用 效率更高的数据结构,将笛卡尔网格应用到并行计算中。
    将生成笛卡尔网格的软件直接与CAD软件对接,进一步减少模型表面处理时间。

    将笛卡尔网格方法应用到有相对运动物体的复杂流场计算中,如外挂投放。

    将现有成熟的各种方法融合一体,实现该技术的软件化、实用化、商品化。

    姓名:黄云清 性别: 男 出生年月: 1962年12月
    最终学历: 研究生 职称: 教授 电话: 0732-8292187
    学位: 博士 职务: 副校长 传真: 0732-8293934
    所在院系: 数学与计算科学学院 E-Mail:
    huangyq@xtu.edu.cn
    通信地址(邮编): 湖南湘潭大学校长办(411105)
    研究方向:偏微分方程数值方法理论及其应用、有限元方法、多重网格法与区域分解法

    多层网格法与区域分解法
    http://www.cctr.net.cn/index01_detail.asp?id=3095

    抛物型方程和非定常流体力学方程数值求解中的移动网格方法研究

    题目: Multiscale Modeling and Simulation(多尺度建模与模拟)

    报告人:张平文教授北京大学数学学院

    日期及时间:2008年4月15日19时

    地点:研究生楼104
    张平文,北京大学数学科学学院教授,博士生导师,教育部长江特聘教授,科学与工程计算系
    系主任,北大科学与工程计算中心常务副主任。兼任973项目“高性能科学计算研究”第四课题
    “材料物性多物理多尺度计算研究”课题组长, “SIAM Journal on Numerical Analysis”
    等国内外杂志编委;发表论文70余篇,专著一部。 1999年获冯康科学计算奖、霍英东教育基金会
    第七届高等院校青年教师奖(研究类)一等奖,2002年国家杰出青年基金获得者并与同年获北京市
    “五四青?杲闭隆保? 2007年获教育部高校科学技术奖自然科学一等奖。主要从事科学计算,
    复杂流体多尺度建模与计算方法,移动网格等方面的研究。

    汤涛(香港浸会大学)www.meihuboyue.com& x# i( [, s7 D3 }
    中科院,研究方向:移动网格法等眉湖泊月论坛, ?+ v+ R) ]. M& u: c2 x5 Z4 @
    http://www.math.hkbu.edu.hk/~ttang/

    张平文(北京大学)www.meihuboyue.com! t) H% g8 m3 `6 ^1 Z% y- i
    北京大学长江学者,研究方向为复杂流体的模拟、多尺度计算与
    www.meihuboyue.com* ?+ O% ^0 S7 }; J! k% {) n
    模拟、移动网格法等9 Q0 `. o, Y; B* F$ s5 _" T
    http://www.math.pku.edu.cn/pzhang/index.html

    微分方程数值解是计算数学中的核心论题。传统的方法有有限差分法、有限元法、边界元法和谱方法。郑州大学|zzu|郑大学生论坛|zzubbs|眉湖泊月论坛, m9 s. n: E- B' i1 |. U% a
    有限差分法想法最为简单,比较容易理解。李荣华的那本《微分方程数值解》就介绍了最基本的东西:收敛性、相容性和稳定性。Richtmeyer & Morton的《Difference Methods for Initial-Value Problems》则是差分法方面的经典著作。R. LeVeque最近也有一本
    《Finite Difference Method for Differential Equations》也很有意思,介绍了差分方法的新的现代概念。LeVeque的书可以在他的主页(
    http://www.amath.washington.edu/~rjl/)上下载,他的另外一本书《Numerical Methods for Conservation Laws》是守恒律
    数值方法方面非常出色的著作。
    www.meihuboyue.com( o6 w$ _! l4 ~/ S

    有限元法方面自然是推荐使用Ciarlet的《The Finite Element Method for Elliptic Problems》。这也是系里专业科的教材,另外Brenner & Scott的《Mathematical Theory of the Finite Element Method》据说也是不错的。 原郑州大学学生论坛zzubbs更名为眉湖泊月论坛/ d* r' U5 H& D! ?0 g2 `
    谱方法对于规则区域上的问题往往是最为有效的方法。华东师大的郭本瑜教授在这方面做过很好的工作,他的《Spectral Methods and Their Applications》广受好评。Purdue大学的沈捷教授也有很出色的工作,他的一个讲义可从他的主页(
    http://www.math.purdue.edu/~shen/)上下载,同时还有相关的Matlab和Fortran程序。谱方法方面最好的入门书为Trefethen的《Spectral Methods in Matlab》,其他的还有Canuto等人的《Spectral Methods in Fluid Dynamics》,不过不知道能不能再学校里找到。www.meihuboyue.com$?: j# A$ G' N/ Z( }

    除了上面这些方法之外,还有近年来比较热门的无网格方法,这些可以参考张雄和刘岩的《无网格方法》(清华大学出版社,2003,50¥)。
    计算数学的主要工具是泛函分析。一般推荐的Yoshida的《FunctionalAnalysis》(有中译本:吉田耕作,《泛函分析》)或者Rudin的《Functional Analysis》。这两本书都是非常难的,但是也是非常经典的书,可能当字典比较合适。但是,泛函分析里面重要的定理
    在计算里面并不见得特别有用,所以我们要甄别那些可能有用的东西,Sawyer的《数值泛函分析引论》也许是比较合适的入门读物。这本书里面介绍了一些泛函分析概念的来由,如Holder不等式的导出,也有泛函分析在计算数学中的应用,比如Kantorovich迭代收敛性准则的解释。张恭庆的《泛函分析》强调泛函分析的应用,里面也有一些应用于数值计算的例子,比如Lax等价定理,值得读一下。
    计算数学还有其他许多重要的分枝,如矩阵计算、反问题、计算流体力学、最优化、逼近论等。由于这方面本人涉略甚少,这里也没有什么好说的了。希望计算数学这些方向的其他同许能补充上去。眉湖流

    http://www.meihuboyue.com/viewthread.php?tid=1535

    国家自然科学基金<<多尺度有限元方法的区域分解和多重网格法>> (2000.1-2002.12), <<多尺度分析及其区域分解和多重网格方法>> (2005.1-2007.12),

    多重网格和区域分解法研究
    完成人:许学军
    多重网格法和区域分解法已成为求解大规模科学工程计算问题最有效的方法.对几类国际上广泛关注的多重网格法和区域分解算法的理论进行了深入,系统的研究.得到了瀑布型多重网格法一般的收敛性分析, Mortar元多重网格法的最优收敛率,Robin型区域分解法的收敛率等. 成果得到了国际同行的关注和肯定,在国际顶尖杂志SIAM J. Numer. Anal. 和Numer.Math. 上发表了多篇论文。


    * 题名: 多重网格法及其在计算流体力学中的应用
    * 责任者: 刘超群编著
    * 出版社:清华大学出版社
    * 出版地: 北京
    * 分类号: O
    * 摘要:

    * 相关连接: 
    ⊙ 页码:361页 * 索书号:52.7/LCQ
    ⊙ 价格:CNY25.00 * 出版日期:1995
    ⊙ 馆藏号:
    ⊙ 该书最近一年来累记借阅次数:6
    ⊙ 丛编: * 版次号:3

    岳天祥,男,1963年生,甘肃省庆阳市人,博士。中国科学院地理科学与资源研究所、资源与环境信息系统国家重点实验室研究员,博士生导师,国家杰出青年科学基金获得者。

    教育经历

      1980年9月-1984年7月就读于陕西师范大学数学系,获学士学位;

      1986年9月-1989年7月就读于兰州大学地理系,获硕士学位;

      1989年9月-1992年7月就读于中国科学院生态环境研究中心和自然资源综合考察委员会,获博士学位。

    研究领域:地球信息科学

      主要研究方向:资源环境模型与系统模拟

      近期主要研究工作:正在发展以遥感数据或模拟数据为初始场、以地面观测数据或空间采样数据为优化控制条件的天地一体化HASM地球表层优化控制模型体系和方法论体系。

    主要科研成果


      主要原创性研究成果包括高精度高速度曲面建模方法(HASM)、变化探测模型、生态阈值模型、多尺度多样性模型和连通性模型等,已完成人口空间分布数值模拟和分析系统、基于HASM的空间精准模拟系统和模型库系统等软件系列。已完成中国HLZ生态系统空间格局自1960年以来的变化趋势和未来90年情景的模拟与分析、中国人口空间分布自1930年以来变化趋势和未来20年情景的模拟分析、中国生态系统食物供应能力及其未来90年情景的模拟与分析。

      HASM模拟精度较经典模型可提高3倍以上,解决了长期以来困扰地理信息系统和计算机辅助设计的曲面建模误差问题。HASM被国际《生态学大百科全书》收录,并被命名为YUE-HASM方法。

      为了解决高精度曲面建模的高内存需求和计算速度慢问题,岳天祥研究员团队开创性地建立了高精度曲面建模的多重格网法(HASM-MG)和自适应法(HASM-AM)。利用HASM-MG算法求解HASM模型的偏微分主方程组,求解过程计算时间随着栅格总数线性增长,解决了传统的HASM模型运算量随栅格总数呈几何增长的问题;针对全局模拟与局域模拟问题,HASM-AM算法根据模拟区域的复杂度和精度要求,调整网格分辨率,从而在保证模拟精度的同时极大地减少了计算时间,降低了存储量。HASM目前已达到了84.45秒内可完成14公里空间分辨率全球尺度地球表层环境要素模拟的运算能力,实现了多尺度数据快速融合,为其广泛应用和三维动态实时可视化奠定了基础。


    数 据同化方法

    1. 多重网格三维变分数据同化方法

    本研究的区域海洋再分析选择了多重网格方法作为海洋数据同化方法。多重网格三维变分数据同化方法的主要思想是由美国国家海洋大气局(NOAA)地球系统研究实验室(Earth System Research Laboratory,简称ESRL)的谢元富博士提出的,并设计了用该方法同化地面二维气象常规观测资料的分析程序,建立了STMAS系统(Space-Time Mesoscale Analysis System)。国家海洋信息中心海洋环境信息保障重点实验室派访问学者赴美参与了STMAS系统的后续发展,将其由二维气象资料同化扩展到了三维同化。多重网格三维变分数据同化方法可以使分析场的长波信息得到快速的修正,避免将长波分析错误地转化到短波分析中。该方法能够以网格的粗细来体现背景场误差协方差矩阵中不同相关尺度的特征,可依次提取观测资料中所包含的不同波长的信息,解决传统三维变分数据同化仅提取特定波长信息的问题。

    2. 温盐多变量数据同化方法

    相对于海温剖面资料而言,盐度剖面资料在时空分布上严重不足,是阻碍直接同化盐度的一个重要因素。为了弥补盐度观测资料的不足,解决同化中只有温度没有盐度的问题,需要把盐度和温度关联起来,引入温盐之间的约束关系,从而对盐度进行相应的调整。

    目前国际上存在许多盐度调整方案,例如Troccoli等(2002)假定在温度同化过程中,温盐关系一直保持不变;欧洲中尺度天气预报中心(ECMWF)通过改变温盐场的垂直廓线来调整盐度(Alves et al., 2001);美国NCEP利用三维变分方法,通过高度计和温度观测资料来调整温盐;Han等(2004)提出了一个把温盐关系作为弱约束的三维变分同化方案;朱江等(2007)设计了一个基于温、盐和海面高相关关系的海面高度同化方案,通过同化海面高度数据对盐度进行调整。本再分析产品的研制借鉴了Troccoli等(2002)的盐度调整方案,在同化温度的过程中尽量保持温盐关系不变;而当有盐度资料时,再同化盐度资料,进而修正温盐关系。

    3. 卫星测高数据同化方法

    在海洋模式中,海面高度变化在某种程度上是由温度和盐度的变化来决定的。本研究借鉴朱江等(2007)同化卫星测高数据的方案,基于传统三维变分数据同化方法,将卫星观测海面高度异常数据反演为温度和盐度剖面。在此过程中,考虑了温度背景场误差的垂直相关性和非线性的温盐关系,从而可以通过同化卫星高度计资料来直接调整模式的温度和盐度场。

    4. 温盐多变量及卫星测高资料同化流程

    (1)将模式输出结果传递给温盐关系计算模块,求得模式每个水平网格点所对应剖面的温盐关系;

    (2)基于温盐关系,由卫星测高海面高度异常数据反演温盐剖面“伪观测”;

    (3)对温度观测资料进行多重网格三维变分数据同化;

    (4)根据温盐关系由温度分析场计算盐度,得到用于同化的盐度背景场;

    (5)对盐度观测数据进行多重网格三维变分数据同化。

    在上述数据同化过程中,观测资料的同化深度取为1000m。

    以上提到的海洋数据同化方法详细情况请参阅“中国近海及邻近海域海海洋再分析技术报告”

    http://www.cora.net.cn/CORA_assimilation_Chinese.html


    多重网格法.pdf - docin.com豆丁网
    http://www.docin.com/p-35687815.html
    http://wenku.baidu.com/view/6904286db84ae45c3b358c13.html

    百思论坛 » CFD【计算流体力学】 » CFD基础理论
    http://www.baisi.net/forum-574-1.html


    中国概率统计学会会议信息
    http://math.bnu.edu.cn/statprob/Conf.php
    中法暑期学校-
    随机矩阵理论及其在高维统计中的应用

    http://web.hku.hk/~jeffyao/ss/
    2011年7月11日至31日 长春市 中国

    本次会议由法国国家科学研究中心(CNRS)和中国国家自然科学基金委员会(NSFC)联合主办,东北师范大学承办,旨在加强中法学术交流,联合培养研究生,就目前国际的热点问题之一:大维随机矩阵理论及其在高维数据分析中的应用进行探讨和交流。

    大会主席:
    法国方面:Alice Guionnet
    Jianfeng Yao
    中国方面:白志东


    组织委员会:
    史宁中 东北师范大学
    郭建华 东北师范大学
    苏中根 浙江大学
    张宝学 东北师范大学
    高 巍 东北师范大学
    陶 剑 东北师范大学
    郑术蓉 东北师范大学

    暑期学校的主题:
    Topics in the probability theory of random matrices :
    Convergence of spectral measures of random matrices; universality;
    Large deviation theory for matrix ensembles; matrix-valued stochastic processes;
    Central limit theorems for linear functional of spectral measures;
    Tracy-Widom laws;
    Spiked population models, deformed matrix models;
    Random matrices with heavy-tailed entries;
    Free probability theory fee convolution

    Topics in high-dimensional statistics with random matrix theory:
    Limiting distributions of general sample covariance matrices, of F matrices;
    Estimation of the population covariance matrices from sample covariance matrices;
    Testing and estimation in presence of high-dimensional data;
    Signal detection; capacity analysis of telecommunication networks

    • - Signal detection; capacity analysis of telecommunication networks.

    联系人信息:
    苏中根 浙江大学数学系
    Email:
    suzhonggen@zju.edu.cn
    电话:0571-87953676
    郑术蓉 东北师范大学数学与统计学院

    展开全文
  • 三维网格表示

    2017-08-08 22:55:43
    三维网格表示 网格有哪些数据结构 网格的数据结构其实就是一个图结构:点,边,面。可以是有向图,比如半边结构,也可以是无向图。在不同的软件或者开发包里,网格数据结构的实现都是有差异的。这种差异主要...

    三维网格表示

    网格有哪些数据结构

    网格的数据结构其实就是一个图结构:点,边,面。可以是有向图,比如半边结构,也可以是无向图。在不同的软件或者开发包里,网格数据结构的实现都是有差异的。这种差异主要体现在网格连接关系的记录结构上,比如顶点是否记录邻域点,边,面信息,边是否记录邻域面信息等。记录的信息越多,查询的时候越方便,但是冗余的信息也越多,如果网格连接关系有变动,维护的信息也越多。另外,这些关系的建立也是需要开销的。所以,没有最好的数据结构,只有最适合当前算法的数据结构。

    在Geometry++里,ITriMesh用于表达网格数据结构。Geometry++的网格算法都是基于ITriMesh接口来调用的,具体如下:

        class GPP_EXPORT ITriMesh
        {
        public:
            ITriMesh(){}
    
            virtual Int GetVertexCount(void) const = 0;
            virtual Int GetTriangleCount(void) const = 0;
    
            virtual Vector3 GetVertexCoord(Int vid) const = 0;
            virtual void SetVertexCoord(Int vid, const Vector3& coord) = 0;
            virtual Vector3 GetVertexNormal(Int vid) const = 0;
            virtual void SetVertexNormal(Int vid, const Vector3& normal) = 0;
    
            virtual void GetTriangleVertexIds(Int fid, Int vertexIds[3]) const = 0;
            virtual void SetTriangleVertexIds(Int fid, Int vertexId0, Int vertexId1, Int vertexId2) = 0;
            virtual Vector3 GetTriangleNormal(Int fid) const = 0;
            virtual void SetTriangleNormal(Int fid, const Vector3& normal) = 0;
            virtual Int InsertTriangle(Int vertexId0, Int vertexId1, Int vertexId2) = 0;
            virtual Int InsertVertex(const Vector3& coord) = 0;
            
            virtual void SwapVertex(Int vertexId0, Int vertexId1) = 0; 
            virtual void PopbackVertices(Int popCount) = 0;
            virtual void SwapTriangles(Int fid0, Int fid1) =0;
            virtual void PopbackTriangles(Int popCount) = 0;
    
            virtual void UpdateNormal(void) = 0;
            virtual void Clear(void) = 0;
    
            virtual ~ITriMesh(){};
        };

    ITriMesh是一个抽象类,不能直接使用。用户可以继承这个接口类,实现其成员函数。这样设计的一个好处是,用户无需改变自己已有的数据结构,只要实现了这个接口类,就可以调用Geometry++里所有关于网格的算法了。真正体现了即插即用的特点。比如用户已经有了一个三角网格类MyTriMeshData,则我们可以定义一个类MyTriMesh,并用它来调用Geometry++里的各种网格算法:

        class MyTriMesh : public ITriMesh
        {
            MyTriMeshData* mData;
            MyTriMesh(MyTriMeshData* data) : mData(data) 
            {}
            virtual Int GetVertecCount() const 
            { 
                return mData->GetVertecCount(); 
            }
            virtual Vector3 GetVertexCoord(Int vid) const 
            { 
                return mData->GetVertexCoord(); 
            }
            virtual void SetVertexCoord(Int vid, const Vector3& coord) 
            { 
                mData->SetVertexCoord(vid, coord[0], coord[1], coord[2]); 
            }
            virtual Int InsertVertex(const Vector3& coord) 
            { 
                mData->InsertVertex(coord); 
                return insertVertexId; 
            }
            // 其它成员函数类似
        };
    
        MyTriMesh triMesh(myTriMeshData); // 用自己的三角网格数据初始化MyTriMesh
        ErrorCode res = ConsolidateMesh::LaplaceSmooth(triMesh, 0.2, 5, true); // 调用网格算法API来修改自己的网格数据
        res = ConsolidateMesh::MakeTriMeshManifold(triMesh);

    关于Geometry++三角网格更详细的介绍,可以参考开发文档里的 三角网格表示


    半边结构好用吗

    半边结构是网格数据结构的一种表达方式,它是一个有向图,把一条边表达为两个有向半边,如下图所示。它的优点在于网格信息的拾取非常方便,缺点是网格连接关系变动后,需要维护的信息也比较多。另外,半边结构表达的网格需要是流形结构,半边结构的构造也需要一定的时间开销。所以,一般场合我们都使用ITriMesh这类简单的网格表达方式。关于半边结构更详细的介绍,可以参考开发文档里的 半边结构

    hafl edge structure

    网格有哪些属性

    三角网格可以看作是一个图结构,由顶点,边和面(三角片)三个元素组成。网格的常见属性也由这三个元素的属性来表达。


    网格顶点属性

    顶点的几何属性通常可以表示为:

        struct VertexInfo
        {
            Vector3 mCoord;
            Vector3 mNormal;
        };

    除此之外,它还有一些其它的属性:

    邻域:邻顶点,邻边,邻面 流形:如果顶点的邻域是一个单连同区域,则这点为流形结构 colorId:对于一个彩色顶点网格,每个顶点有一个颜色值。如果这个网格是多个角度的数据拼接而成,则每个角度的网格片往往存在色差。colorId用于记录这个色差信息:同一个colorId的顶点,可以认为是颜色相容的,没有色差。colorId属性用于去除顶点色差的功能里。

    网格边属性

    边的几何属性一般由对应端点的几何属性来表达,所以它通常由拓扑属性来表达:

        struct EdgeInfo
        {
            int mVertexId[2];
            std::vector< int > mFaceIds;
        };

    除此之外,它还有一些其它的属性:

    边界边:如果它的邻接面为1,则为边界上的边 非流形边:如果它的邻接面个数 > 2,则为非流形边

    网格面属性

    面的常见表达方式为:

        struct TriangleInfo
        {
            Int mIndex[3];
            Vector3 mNormal;
        };

    其中mIndex为三角片的顶点索引,mNormal为三角片的法线。三角片的属性其实用的并不多,它常见的属性是面点属性。所谓面点,即三角片的三个顶点。需要注意的是,面点和顶点的概念是不同的。下面是一些常见的面点属性:

    面点法线:它和顶点法线是不一样的概念。比如特征尖锐的区域,可以设置面点法线为面法线;在光滑区域,设置面点法线为顶点法线。 纹理坐标:纹理坐标是一个典型的面点属性。严格来讲,顶点并没有纹理坐标的概念,只有三角形有纹理坐标的概念。网格UV展开到平面的时候,如果没有割缝产生,那么每个顶点在其相邻三角形内的纹理坐标都是一样的,故可简称为顶点的纹理坐标。如果有割缝产生,割缝处的顶点在不同三角形内的纹理坐标是不一样的。这时,顶点和纹理坐标是一对多的关系。其实,UV展开在UV域生成了一个二维网格,UV域的网格的顶点和原始网格的面点是一一对应的。所以,从这个角度来看SimplifyWithTextureCoords,它其实是对UV域的网格做了保持边界的QuadricSimplify操作。 点像对应:点像对应信息用于纹理贴图,它的含义是三角片的面点在图像中的对应。它的概念和纹理坐标是类似的,都是网格到二维区域的一个映射。点像对应信息在图像域也映射出了一个二维网格。和UV展开的区别在于,UV展开的二维域是唯一的,而点像对应的二维域(图像),有可能有多个(多张图片)。这导致某些三角片的面点可能对应于不同的图像域。对于这类三角片的纹理贴图,一般采用面点颜色插值。 注意:虽然点像对应是一个面点属性,Magic3D里的点像对应采用的却是顶点属性的表达方式,其主要原因是,网格的点像对应信息是从点云的点像对应映射过来的,所以可以认为每个顶点对应于一个像素。

    网格法线计算

    网格的法线可以分为三类:面法线,顶点法线,面点法线。

    面法线:可以通过面的两条边做外积叉乘得到面法线 顶点法线:可以加权平均顶点的面邻域法线 面点法线:它代表了面里的顶点,而不是网格顶点,它与网格顶点是多对一的关系。比如正方体的一个角点,它有三个垂直的相邻面,面点法线可以取对应的面法线,而顶点法线则明显区别于这类面点法线。面点法线不是很常用。

    看似简单的法线计算,要得到稳定的计算结果,需要考虑一些退化的情况。比如网格内有面退化的时候,该如何处理呢?

    展开全文
  • 网格的学习—1

    2015-12-14 21:43:35
    这节我将会给大家讲一下unity里面的网格,或许有好多人不知道texture和sprite的区别,这里我们简单的讲一下,texture只是简单的图片,他可以使png格式,也可以是其他格式,而sprite它是有网格信息的,一张图片怎么样...

        这节我将会给大家讲一下unity里面的网格,或许有好多人不知道texture和sprite的区别,这里我们简单的讲一下,texture只是简单的图片,他可以使png格式,也可以是其他格式,而sprite它是有网格信息的,一张图片怎么样才能显示在屏幕上呢,在unity2D环境中,其实首先是给一个空物体添加一个MeshFilter,有了网格并一定就能显示,还要给物体添加一个MeshRenderer,当然你还要给MeshRenderer要添加材质,这才可能显示一张图片。sprite它的网格其实是一个面,unity本来就拥有背面剔除技术,所以背面我们是看不到的,那么这节我将会教你们怎么绘制一个图片,主要分下面几步:

      1  建一个空物体。

      2 添加MeshFilter和MeshRenderer组件。

      3  附加材质。

      4 添加网格。

    在unity里面,一个游戏物体是由很多面,一个面是是由三角形组成。计算机绘制一个三角形他的绘制顺序是顺时针的,至于为什么是顺时针,其实我也不知道,

    现在绘制一个三角形,首先先绘制三个点,然后对每个点指定他们的绘制顺序(顺时针才能显示出来)。假如我们依次添加了三个点,Vector3(0,0,0),Vector3(1,0,0),Vector3(0,1,0)。你可以在草稿纸绘制出他们的位置,然后用顺时针去比对,看哪一个是先绘制,哪一个最后绘制的,结果得到第一个点绘制顺序为0,第二个点的绘制顺序为2,第三个点绘制顺序为1,这样一个三角形就能成功绘制出来了。

    具体代码如下:

     首先假装前面2步你都完成了,我们只做第三步和第四步。

     private MeshGenerateMesh()

    {

            _verticles=new List<Vector3>();
            _trangels=new List<int>();
            _uvList=new List<Vector2>();
            _waterMesh=new Mesh();

        //首先添加点,

           _verticles.Add(new Vector3(0, 0, 0));
           _verticles.Add(new Vector3(1, 0, 0));
           _verticles.Add(new Vector3(0, 1, 0));

          _waterMesh.vertices = _verticles.ToArray();

          //给出他们的绘制顺序

          _trangels.Add(0); _trangels.Add(2); _trangels.Add(1);

            _waterMesh.triangles = _trangels.ToArray();

         //最后给网格贴UV信息,

           _uvList.Add(new Vector2(0, 0));
           _uvList.Add(new Vector2(1, 0));
           _uvList.Add(new Vector2(0, 1));

          _waterMesh.uv = _uvList.ToArray();

          return _waterMesh;

    }

    第三步做完了之后给MeshRenderer指定材质就行了。一个四边形由2个三角形组成,依次类推,那么我们只用添加4个点就行了,但是我们要指定6个点的绘制信息。说明有的点重复了,当然你可以找到其中的规律。绘制出了一个四边形,你再想想你是不是可以绘制出来一个正方体,下节我们来做一个有趣的绘制


       

    展开全文
  • 阅读前的小说明: 由于工作需要研究Service Mesh,故本人翻译了Nginx官网的一系列有关Service Mesh的文章,以便日后查阅,也方便各位参阅。希望能借此文章,与各位大佬们多多交流,谢谢。 此外,由于本人的英文功底...

    阅读前的小说明:

    由于工作需要研究Service Mesh,故本人翻译了Nginx官网的一系列有关Service Mesh的文章,以便日后查阅,也方便各位参阅。希望能借此文章,与各位大佬们多多交流,谢谢。
    此外,由于本人的英文功底着实较为薄弱,因此文中若如果出现部分翻译不当或翻译错误,也希望大家批评指正,不吝赐教!

    原文链接( Nginx 官方网站 ):https://www.nginx.com/blog/what-is-a-service-mesh/
    翻译By : 田同学 || Contact me : leontian1024@gmail.com
    https://github.com/XinyaoTian 注明原出处及译者信息,欢迎转载。

    啥是服务网格( Service Mesh )?

    服务网格 == 一种微服务的基础架构 译者注。

    服务网格( Service Mesh )是指用于微服务应用的可配置基础架构层( configurable infrastructure layer )。它使每个service实例之间的通信更加流畅、可靠和迅速。服务网格提供了诸如服务发现、负载均衡、加密、身份鉴定、授权、支持熔断器模式( Circuit Breaker Pattern )以及其他一系列功能。
    服务网格的实现通常是提供一个代理实例,我们称之为"sidecar"。sidecar 包含在每一个service 之中。sidecar 主要处理 service 间的通信、监控、以及一些安全相关的考量 —— 任何可以从服务本体中抽象出来的安全方面的部分。通过这种方式,开发者可以在服务中专注于开发、支持以及维护;运维人员可以维护服务网格并运行app。

    Istio( 由Google、IBM、Lyft公司在背后进行支持 ) 是目前最广为人知的一款服务网格架构。Kubernetes( 由Google最早进行设计并开源 ) 是目前 Istio 唯一支持的容器组织框架。

    服务网格对于其组件service和功能有如下术语:

    容器组织框架( Container orchestratiob framework ):

    随着越来越多的容器被加入到应用的组织架构中,一个用于监控和管理这一系列容器的独立工具,即:容器组织框架,就变得不可或缺了。Kubernetes 由于考虑到市场原因( Docker Swarm和Mesosphere DC/OS是其主要竞争者 ),Istio 并非强制安装。因此安装时是否集成 Istio 变成了可选项。

    Service 与 Service 实例( Service Instance ):

    确切来讲,开发者创建的并非是一个service,而是一个由service定义的或者框架定义的实例。那些app创建的service实例由此而来,并且真正干活的是这些实例。然而,"service"一词经常被用来同时指代“定义service的东西”和“service实例”这两者。

    Sidecar 代理(Sidecar Proxy):

    sidecar proxy 指专“注于每个具体的service实例”的一个代理实例。它与其他的sidecar proxy通讯并由容器组织框架( 比如Kubernetes )进行统一管理。

    服务发现( Service discovery ):

    当一个实例需要与其他service进行通讯时,它需要“寻找并发现( find & discovery )”另一个健康、可用的 service 实例。容器管理框架( container managment framework )维护着一个时刻准备接收请求的实例列表。

    负载均衡( Load balancing ):

    在一个服务网格中,负载均衡自底向上地工作着。由服务网格维护的可用实例列表可以进行打分、评级、并选出“最闲”的service,这就是在高层次上的负载均衡。

    加密( Encryption ):

    服务网格可以加密和解密服务间的请求与相应,并从service中将这些步骤分离,从而减轻每个service内的负担。服务网格可以通过优先再利用已经存在的、持续的连接( connection )来提高性能,以便减少“新建连接”时高昂的计算开销。

    认证与权限( Authentication and Authorization ):

    服务网格可以授权并认证从外来的或是app内服的各种请求,并且只发送那些有效的请求给service。

    支持熔断器模式( Support for the circuit breaker pattern ):

    服务网格能够支持熔断器模式,它能隔离那些不健康的实例,并逐渐将那些有保证的实例再次添加进健康实例池( healthy instance pool )。

    data plane 与 control plane

    data plane == 数据流动的、工作真正被处理的部分 control plane == 管理监控这些工作运行的部分 译者注。

    服务网格中工作被完成的部分( 包括service实例、sidecar代理以及它们间的沟通 )被称作 data plane 。但是服务网格中也会包含一个监控管理层,我们称它为 control plane。

    control plane 处理的工作诸如:创建新实例、终止不健康或者不需要的实例、服务监控、集成监控与管理、实施应用范围的策略( application-wide policies )以及优美地将整个应用作为一个整体结束掉。典型的 control plane 包括、或被设计成用于连接API、命令行工具、或者一个用于管理整个应用的可视化用户界面。

    在这里插入图片描述
    (上图为 nginMesh —— 一个基于Istio的服务网格,包括了control plane,data plane 以及 使用 Nginx 作为sidecar Proxy)

    Nginx 有一个可以兼容 Istio 架构的服务网格,我们称它为 nginMesh 。上图基于nginMesh的架构展示了 Nginx 作为sidecar Proxy的角色,与其他典型的Istio组件共同发挥作用。

    一个典型的网格服务架构场景是,当你使用容器和微服务去解决一个对性能要求很严苛的应用开发工作时。比如使用微服务架构的先锋们——Lyft,Netflix和Twitter这些公司,他们需要健壮的service去服务全世界上百万的用户,每时每刻( 可以参考Netflix利用这种架构的实际应用场景,见: https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/)。对于那些较少访问需求的应用,上图这种简单的架构就足够了。

    服务网格架构不可能永远是所有应用开发和交付问题的解决方案。架构师和开发者有许多很棒的工具,但要分清哪些是锤子、哪些是钉子。Nginx 微服务相关架构( 见: https://www.nginx.com/blog/introducing-the-nginx-microservices-reference-architecture/ ),包含了多种不同的模型,提供了解决微服务问题的整体方案。

    这只是服务网格架构中的一个元素——就像Nginx、容器、Kubernetes和微服务作为一整个架构级的方案一样——可以被,也已经被用于富有成果的没有集成服务网格的实施中。比如Istio这个服务网格架构,它就设计成模块化的,因此开发者可以选择是否真的需要用它。将上面这些概念记在你的脑海中,当你开发一个坚实的应用时,服务网格的这些概念是很有价值的。即使你并不非常确切地明白它们。

    后记

    我们计划将服务网格写成一个系列,这篇是这个系列的第一章。我们计划在之后陆续更新这些文章:
    什么是服务网格? :【本篇】
    服务网格架构的好处与坏处: 主要用于阐述哪些场景下,服务网格是适用的;以及什么时候做出改动会是更好的。
    服务网格架构 vs API途径: 我们将阐述:何时选择API、何时选择服务网格,或者何时将它们混合使用是适当的。
    Kubernetes与服务网格架构: 阐述如何使用Kubernetes与其一系列架构,包括服务网格。
    在服务网格架构中使用Nginx: Nginx可以作为一个关键角色,作用于各种服务网格架构之中——作为 sidercar proxy 、 准入控制( Ingress controller )或者同时作为这两者——或者提供诸如负载均衡、服务发现、缓存等特性的功能。

    翻译By 田同学
    希望对您的工作学习有所帮助,谢谢。

    展开全文
  • 网格

    2018-08-25 10:23:39
    // 一个 import UIKit   class SPViewController: UIViewController ,UICollectionViewDelegate,UICollectionViewDataSource{      var readID = "... var flowlayout = UICollectionViewFlow...
  • 网格交易学习笔记

    2019-08-10 11:35:05
    “不要妄想预测股市走势,那是不可能的”—彼得林奇 “我从来没有见过能够预测市场走势的人”—巴菲特 预测股市是不可能的,解决办法就是制定应对不同情况的交易策略。 股市走势包括趋势行情和盘整盘整行情,其中...
  • 网格布局特点: l 使容器中的各组件呈M行×N列的网格状分布。 l 网格每列宽度相同,等于容器的宽度除以网格的列数。 l 网格每行高度相同,等于容器的高度除以网格的行数。 l 各组件的排列方式为:从上到下,...
  • 目录网格划分生成映射网格的基本条件面映射网格体映射网格参考文献 网格划分 网格划分的方法有两种,应根据实际情况,选择合适的网格划分方法。 自由网格划分 自由网格限制较少,对单元形状与模型复杂程度无过多...
  • 目的:在一张非结构网格当中寻找最外n层的边缘网格原理:在二维情况下,如果有两个网格相连,那么一定会在中间有一条公共边,这条公共边属于这两个网格,但是对于边缘网格,一定存在一条边只属于该网格自己。...
  • 三角网格(Triangle Mesh)

    2017-05-24 19:49:09
    三角网格(Triangle Mesh) 最简单的情形,多边形网格不过是一个多边形列表;三角网格就是全部由三角形组成的多边形网格。多边形和三角网格在图形学和建模中广泛使用,用来模拟复杂物体的表面,如建筑、...
  • 3.2.5 GridLayout(网格布局)标签: StudyNote 本文声明: 本文由Coder-pig编写,想了解其他内容,可见CoderPig’s Android Study Note——目录 尊重作者劳动成果,未经本人授权,禁止转载!违者必究! 目录源...
  • 本文研究了网格形状和网格尺寸对计算结果的影响。 现研究一个矩形截面的杆件(如图1.1),对其末端施加两种等效的载荷:在末端面施加remote force 100N的力,如图1.2所示。对杆件进行2种网格形状划分,分别是六面体...
  • 股票网格交易策略

    2019-04-06 16:20:48
    什么是网格交易 定义 设定价值中枢,利用“底仓+档位”的模式对投资标的进行机械式操作,下跌时,进行分档买入,上涨时,进行分档卖出。网格法由于不依赖人为的思考,完全是一种程序行为,像渔网一样,利用行情的波动...
  • Flotherm 网格划分经验

    2016-01-18 17:11:03
    网格划分步骤:1.几何模型处理; 2.系统网格设置; 3.重要区域网格划分; 4.网格独立性。创建几何模型时尽量避免产生小尺寸的网格,以减轻后期网格划分的工作量。系统网格设置Minimum Size用于确定求解域内最小...
  • 很多时候为了可视化效果的美观,就不得不从细节上下手,这里我们就介绍一下这些细节之一的网格线。 首先导入需要用到的库,matplotlib.pyplot是必须的,Numpy是为了生成画布用的。 import numpy as np import ...
  • 我的模型分成三个部分,看作三个计算域,两端的两个计算域使用结构化网格,中间的计算域使用非结构化网格。因为中间包括风机的部分结构复杂,所以使用非结构化网格。 a. 非结构化网格质量不好,如何解决? 如果是二...
  • 二、不同的网格划分方法和网格类型 1、自由网格划分(Free)——智能网格(smart size) 1)面自由网格划分 2)体自由网格划分 2、映射网格划分(mapped) 1)限制条件 2)网格划分步骤 3)保证 “规则的”形状...
  • GIS 网格索引算法

    2016-11-21 15:51:57
    GIS网格索引算法 在上面的几篇文章中,简单的介绍了GIS系统中的网格索引,本文将简单的介绍GIS网格索引的算法步骤。 (1)创建:通过数据的统计特征计算出一个网格尺度,对每一个实体按网格进行分解,在其落入...
  • meshgrid 函数用来生成网格矩阵,可以是二维网格矩阵,也可以是三维。 对于生成二维网格,用法为:[x y]=meshgrid(a b); % a 和b是一维数组,如a=[1 2 3]; b= [2 3 4 ]; 则生成的 x 和 y 都是二维的矩阵, x 的每行...
  • 与flex布局不同的是,网格布局(grid)是一个二维的布局,可以创建任意行列的布局。 首先来介绍几个概念; 想象一个五行五列的布局,网格线就是构成网格所有的线条,五行五列的布局每行就会有6条网格线。 网格...
1 2 3 4 5 ... 20
收藏数 208,367
精华内容 83,346
关键字:

网格