1949啦网--小小 痛苦,是因为能力和欲望不匹配造成的

使用gmsh生成带边界条件的网格

gmsh中的元素可以分成两类:几何实体和物理实体。几何实体是网格元素的最基本组成,物理实体(物理组)则是在几何元素的基础上进行逻辑层上的分类。从架构上看,几何实体属于物理划分,物理实体则是逻辑划分。

gmsh支持根据物理性质将几何实体进行归类和划分。目前所知物理实体一个非常重要的性质是设定网格的边界条件:将相同边界条件的几何元素归到同一个组下,gmsh在生成网格的时候就将物理信息写入到生成的网格信息中。

物理实体的定义需要在定义的元素前加上”Physical”标识符,其余的同几何实体的定义相同。下面是一个二维机翼的gmsh定义:

cl_1 = 0.01;  Point(1) = {1, 0, 0, cl_1};  Point(2) = {0.2906701309999999, 0, 0.059599889, cl_1};  Point(3) = {0.290670131, 0, 0.059599889, cl_1};  Point(4) = {-3.33066907387547e-016, 0, -2.775557561562891e-017, cl_1};  Point(5) = {0.290670131, 0, -0.059599889, cl_1};  Point(6) = {-1.110223024625156e-016, 0, 0, cl_1};  Point(7) = {1, 0, 0, cl_1};  Point(8) = {0.2906701309999999, 0, -0.059599889, cl_1};  p1 = newp;  Point(p1 + 1) = {0.9578477628235885, 0, 0.005808055788066277};  Point(p1 + 2) = {0.9136001717514742, 0, 0.01159953317971515};  Point(p1 + 3) = {0.8678598741632115, 0, 0.01728526031819392};  Point(p1 + 4) = {0.8212779475631614, 0, 0.02277865740518693};  Point(p1 + 5) = {0.7745191250941298, 0, 0.02800031778249978};  Point(p1 + 6) = {0.7282262993505407, 0, 0.03288198060276357};  Point(p1 + 7) = {0.6829880771923493, 0, 0.0373694940386463};  Point(p1 + 8) = {0.6393125213400493, 0, 0.04142453011683183};  Point(p1 + 9) = {0.5976090881089672, 0, 0.04502500226786509};  Point(p1 + 10) = {0.5581794445899648, 0, 0.0481643117667218};  Point(p1 + 11) = {0.521216620190355, 0, 0.05084967643767647};  Point(p1 + 12) = {0.4868110356265319, 0, 0.05309985880292391};  Point(p1 + 13) = {0.4549614552219337, 0, 0.05494261362247144};  Point(p1 + 14) = {0.4255888082703554, 0, 0.05641213152223604};  Point(p1 + 15) = {0.3985510271977428, 0, 0.05754668640628761};  Point(p1 + 16) = {0.3736574289168878, 0, 0.05838661862754537};  Point(p1 + 17) = {0.3506816041400513, 0, 0.0589727173733007};  Point(p1 + 18) = {0.3293721908004415, 0, 0.05934501212155738};  Point(p1 + 19) = {0.309461241465114, 0, 0.0595419466863262};  Spline(1) = {1, p1 + 1, p1 + 2, p1 + 3, p1 + 4, p1 + 5, p1 + 6, p1 + 7, p1 + 8, p1 + 9, p1 + 10, p1 + 11, p1 + 12, p1 + 13, p1 + 14, p1 + 15, p1 + 16, p1 + 17, p1 + 18, p1 + 19, 2};  p2 = newp;  Point(p2 + 1) = {0.2842729112131264, 0, 0.05959035601288155};  Point(p2 + 2) = {0.2761001220809002, 0, 0.0595451957195354};  Point(p2 + 3) = {0.2666300877434753, 0, 0.05944430161792291};  Point(p2 + 4) = {0.2560533097681484, 0, 0.05926870849763945};  Point(p2 + 5) = {0.2444412386433862, 0, 0.05899746041353254};  Point(p2 + 6) = {0.2318090344278302, 0, 0.058605806668528};  Point(p2 + 7) = {0.2181439021461914, 0, 0.05806365702589601};  Point(p2 + 8) = {0.2034209651627122, 0, 0.05733392771630338};  Point(p2 + 9) = {0.1876150065513268, 0, 0.0563705983368452};  Point(p2 + 10) = {0.1707120994729877, 0, 0.0551163616335265};  Point(p2 + 11) = {0.1527237978253341, 0, 0.05349978292686403};  Point(p2 + 12) = {0.1337063457254963, 0, 0.05143193572045287};  Point(p2 + 13) = {0.1137876774535901, 0, 0.04880258242681034};  Point(p2 + 14) = {0.09320552798189294, 0, 0.04547617760131762};  Point(p2 + 15) = {0.07236044644973513, 0, 0.04128836888014319};  Point(p2 + 16) = {0.05188730831459138, 0, 0.03604437967545813};  Point(p2 + 17) = {0.03274685573930983, 0, 0.02952182506630169};  Point(p2 + 18) = {0.01633265015110124, 0, 0.0214822334050408};  Point(p2 + 19) = {0.004575175047531102, 0, 0.01169763023104438};  Spline(2) = {3, p2 + 1, p2 + 2, p2 + 3, p2 + 4, p2 + 5, p2 + 6, p2 + 7, p2 + 8, p2 + 9, p2 + 10, p2 + 11, p2 + 12, p2 + 13, p2 + 14, p2 + 15, p2 + 16, p2 + 17, p2 + 18, p2 + 19, 4};  p3 = newp;  Point(p3 + 1) = {0.2842687444062102, 0, -0.05959033995136771};  Point(p3 + 2) = {0.2760902965551228, 0, -0.05954510785780694};  Point(p3 + 3) = {0.2666128650422044, 0, -0.05944404536989124};  Point(p3 + 4) = {0.2560272811856329, 0, -0.05926814784851871};  Point(p3 + 5) = {0.2444053852046738, 0, -0.05899642178635941};  Point(p3 + 6) = {0.2317627182952431, 0, -0.05860407976787362};  Point(p3 + 7) = {0.2180868707188054, 0, -0.05806099563459484};  Point(p3 + 8) = {0.203353381935633, 0, -0.05733005183556716};  Point(p3 + 9) = {0.1875375094086677, 0, -0.05636519948112355};  Point(p3 + 10) = {0.1706258837914739, 0, -0.05510911382545057};  Point(p3 + 11) = {0.1526307187728704, 0, -0.05349036308954442};  Point(p3 + 12) = {0.1336090279833125, 0, -0.05142005881221923};  Point(p3 + 13) = {0.1136896084213433, 0, -0.0487880588136444};  Point(p3 + 14) = {0.09311108862650791, 0, -0.04545900258153844};  Point(p3 + 15) = {0.07227479757675123, 0, -0.04126885612468364};  Point(p3 + 16) = {0.05181599481494702, 0, -0.03602334947685121};  Point(p3 + 17) = {0.03269491843986368, 0, -0.02950085009913444};  Point(p3 + 18) = {0.01630296371554681, 0, -0.02146392080930703};  Point(p3 + 19) = {0.004565723668620725, 0, -0.01168586711270097};  Spline(3) = {5, p3 + 1, p3 + 2, p3 + 3, p3 + 4, p3 + 5, p3 + 6, p3 + 7, p3 + 8, p3 + 9, p3 + 10, p3 + 11, p3 + 12, p3 + 13, p3 + 14, p3 + 15, p3 + 16, p3 + 17, p3 + 18, p3 + 19, 6};  Reverse Line {3};  p4 = newp;  Point(p4 + 1) = {0.9578371307341608, 0, -0.005809451776204171};  Point(p4 + 2) = {0.9135836204677359, 0, -0.01160162204700566};  Point(p4 + 3) = {0.8678423367489414, 0, -0.01728739358632329};  Point(p4 + 4) = {0.8212641228333738, 0, -0.02278029282335023};  Point(p4 + 5) = {0.7745130557952343, 0, -0.02800105787177528};  Point(p4 + 6) = {0.7282310363923532, 0, -0.03288159346440879};  Point(p4 + 7) = {0.6830054673847058, 0, -0.03736791477271506};  Point(p4 + 8) = {0.6393431339409602, 0, -0.04142184433789697};  Point(p4 + 9) = {0.5976522728176452, 0, -0.04502141572787306};  Point(p4 + 10) = {0.5582334954732195, 0, -0.04816011152865139};  Point(p4 + 11) = {0.5212790094647602, 0, -0.05084518927366299};  Point(p4 + 12) = {0.4868786787883632, 0, -0.05309541172223745};  Point(p4 + 13) = {0.4550309732288671, 0, -0.05493850005863926};  Point(p4 + 14) = {0.4256567607517621, 0, -0.05640858514472293};  Point(p4 + 15) = {0.398614100322739, 0, -0.05754386310405684};  Point(p4 + 16) = {0.373712570479338, 0, -0.05838458613465396};  Point(p4 + 17) = {0.3507261053773512, 0, -0.05897145133181579};  Point(p4 + 18) = {0.3294037189943399, 0, -0.05934439706944743};  Point(p4 + 19) = {0.3094778295903463, 0, -0.05954178043174179};  Spline(4) = {7, p4 + 1, p4 + 2, p4 + 3, p4 + 4, p4 + 5, p4 + 6, p4 + 7, p4 + 8, p4 + 9, p4 + 10, p4 + 11, p4 + 12, p4 + 13, p4 + 14, p4 + 15, p4 + 16, p4 + 17, p4 + 18, p4 + 19, 8};      Coherence;    cl_2 = 2.0;    Point(89) = {-20, 0, 20, cl_2};  Point(90) = {-20, 0, -20, cl_2};  Point(91) = {20, 0, -20, cl_2};  Point(92) = {20, 0, 20, cl_2};  Line(7) = {89, 92};  Line(8) = {92, 91};  Line(9) = {91, 90};  Line(10) = {90, 89};  Line Loop(11) = {10, 7, 8, 9};  Line Loop(12) = {1, 2, -3, -4};  Plane Surface(13) = {11, 12};    Physical Line(14) = {9, 7, 10, 8};  Physical Line(15) = {1, 2, 3, 4};  Physical Surface(1) = {13};

上述文件定义了一个二维机翼的几何实体和物理实体。将其使用gmsh则可生成二维的网格。

注意

如果需要导出msh格式,必须给出完整的physical定义!在上述例子中,如果没有给出最后的physical surface定义,保存成msh的格式则只有边界上的数据。话句话说,如果定义了物理实体,msh格式只会输出和physical信息的几何实体相关的网格!

原文链接:https://www.qiquanji.com/post/4795.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

作者:xialibing 分类:网络教程 浏览: