




免费预览已结束,剩余29页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GAMBIT TUTORIAL GUIDE:4. 燃烧室模型的建立(3D)4.燃烧室模型的建立(3D)在这份指导书中,你可以通过运GAMBIT中的top-down几何结构法来为燃烧室生成几何模型(用实体来生成容积)。你可以通过非结构化六面体网格法来为画出的燃烧室几何体划分网格。在这份指导书中你可以学习到如何去: 移动一个体积; 从一个体积中扣除另一个; 把一个体积阴影化; 交叉两个体积; 混合一个体积的边; 通过对面进行扫描来生成体积; 为读入FLUENT/UNS来准备网格。4.1 前提这份指导书假定读者已经掌握了指导书1并且已对GAMBIT界面相当熟悉。4.2 问题描述图41:问题图示这个问题在图41中以图解的形式表示出来。此几何体包括一个简化的向燃烧腔加料的燃料喷嘴,在这个指导书中由于几何结构对称你可以仅作出燃烧室几何体的1/4模型。喷嘴包括两个同心管,其直径分别是4个单位和10个单位,燃烧室的边缘与喷嘴下的壁面融合在一起。4.3 策略在这份指导书中,你可以运用top-down几何结构法来生成燃烧室几何体,你可以生成体积(在本例中为方体和圆体)并用布尔运算把它们结合起来,交叉、扣除这些体积以生成基本体积,最后,通过“融和”命令,你可以舍掉一些边界以完成几何体生成。在这个模型例子中,简单的选择捡起几何体并用六面体单元对整个区域进行网格划分是不可能的,由于Cooper工具(在本向导中要应用)需要两组面,一组平行于扫描路径,另一组垂直于扫描路径,不管怎样,融和边界不适合于任一组。对cooper工具更详细的描述见GAMBIT Modeling Guide 。你需要把几何体分成许能用cooper来划分网格的部分。在GAMBIT中有许多分解几何体的方法。在这个例子中,你可以采用把那些挨着弯面的体积部分从主体积中分开的方法。对这个燃烧室进行分解的详细步骤在下面给出。注意到几何体中有许多面,其默认的网格划分方案是pave方案。这些面中的大部分与Z方向垂直。在Z方向有许多几何突起,因此在cooper网格方案中应被选为主方向。为使其可能,X、Y方向的铺砌面(图42中的两个对称面)必须改变以去用Submap或Map网格划分方案。图42:燃烧室几何结构的两个对称面默认的,GAMBIT对这两个面选择Pave网格划分方案,是因为它们每一个都在融合处都有一个圆边。如果你把每个面圆角分裂出来并通过一个体积把它们连接起来,你可以在剩余面上用Submap网格划分方案,并且对这个体积用Cooper网格划分法。你可以在两个融合边的连接处生成一个面(图43中的面A)来替代在每个对称两上生成个面。这个面将会从两个方向扫描到对称面上(生成图43中的面B和C),来把体积分成三部分。这三个体积可以用Cooper分别进行网格划分。这个指导书也展示了一些控制网格密度和单独面上的网格划分方法。你可以用Tri Primitive方案和一个更细网格尺寸对形成第二个入口的1/4圆面进行网格化。类似的,你可以用一个细化的mapped网格对初入口的环面进行网格化。为达到Cooper的要求,你还需要在这两个面之间的面上生成一个表格化网格。最后,你可以用自动Cooper工具去网格化剩余的面和体。图43:在对称面的融和边界处生成的平面4.4 步骤启动GAMBIT。第1步:选择一个解算器1通过从主菜单中进行下面的选择以选定一个解算器去运行你的CFD计算。Solver - FLUENT/UNS 解算器的选择指定了不通窗口可供应用的变量(如:这个边界类型在Specify Boundary Types窗口适用),当前选择的解算器显示在GAMBIT GUI的顶部。第2步:设定网格划分的默认间隔尺寸Edit - Defaults 在这个指导书中,你可以改变网格划分的默认间隔大小。默认的网格步长基于间隔参数,你可以在Edit Defaults窗口中对它进行修改,你键入的这个值应是模型中网格单元的估计平均值。这个值将作为所有网格形式的默认Interval size出现。如果需要的话,你可以在网格划分窗口中改变它。1. 在窗口的顶部选择MESH标签。2. 在窗口排列表的顶部选择INTERVAL单选框。3. 在变量列表中选SIZE。SIZE将出现在列表的底部并且默认值也将在Value文本键入框中出现。4. 在Value文本键入框中键入值2。5. 点击SIZE左边的Modify钮。变量SIZE的Value值将会被更新。6. 关闭Edit Defaults窗口。第3步:生成两个圆柱体1. 生成一个柱体以形成燃烧室GEOMETRY - VOLUME - CREATE VOLUME R打开Create Real Cylinder窗口a) 在柱体的Height中键入值12。b) 在柱体的Radius 1 中键入值4。Radius 2的文本键入框可留为空白,GAMBIT将默认设定为Radius 1值相等。c) 选择Positive Z(默认)作为Axis Location。d) 点击Apply按钮。2些步骤以生成一个Height =20, Radius 1 =10并以positive z为轴的柱体。3点击在Global Control工具栏左上部的FIT TO WINDOW命令按钮,去观察柱体的生成。这两个柱体在图44中示出,按住鼠标左键并拖动它以观察视图的旋转。你可以按下鼠标右键并把鼠标沿靠近或远离你的方向拖动以放大或缩小视图。图44:两个圆柱4移动生成的第一个柱体以使它在大柱体的前面。GEOMETRY - VOLUME - MOVE/COPY/ALIGN VOLUMES 这将打开Move / Copy Volumes窗口a) shift+左键选中视图窗中的小柱体在Move / Copy Volumes窗口的Volumes下将被键入volume.1。b) 在Move / Copy Volumes窗口中的Volumes下选择Move(默认)。c) 在Operation下选择Translate(默认)。d) 键入Global移动矢量点为(0,0,8)以把小柱体沿z方向移动8个单位。你可以看到GAMBIT在你向Global键入值时会自动在Local下填入值。e) 点击Apply。这两个柱体如图45所示。可以看到小柱体已被从大柱体的后部移到前部。图45:移动小柱体后的两个柱体第四步:从大柱体中扣除小柱体1. 通过由一个柱体中扣除另一个的方法来生成一个体积选定体积的顺序很重要,例如,图46显示了从A中扣除B和从B中扣除A的不同。图46:扣除体积 GEOMETRY - VOLUME - BOOLEAN OPERATIONS R打开Subtract Real Volumes窗口a) 在图形窗口中shift+左键选中大柱体。b) 左键击Subtract Volume右边的列表框接受volume.2,并激活Subtract Volume框。!你可以在视图窗中持续按下鼠标左键并点击右键来接受选择大柱体并把焦点移到Subtract Volume条框中。c) 选中小柱体。这个选择顺序将会保证小柱体被从大柱体中扣除而不是反之。第五步:阴影化和旋转视图1. 在Global Control工具条的中下部点击RENDER MODEL命令按钮以生成体积的阴影图。2. 按下鼠标左键并拖动鼠标以旋转视图,并观察在大柱体中生成的柱体洞(见图47)图47:显示大圆柱的洞的阴影几何结构3. 要返回到非阴影图,右击Global Control 工具栏中的RENDER MODEL命令钮,并从弹出条框中选。第六步:去掉柱体的3/4在这一步中,你可以生成一个和圆柱体相交的方形体。柱体的3/4将会被去掉,留下得体积作为燃烧室的入口。1. 生成和已有柱体相交的方体。GEOMETRY - VOLUME - CREATE VOLUME R打开Create Real Brick窗口。a) 为方体的Width键入值21。Depth和Height可以被留为空白,GAMBIT将默认它们和Width相等生成一个正方体。b) Direction为+X +Y +Z(默认)。c) 点击Apply。图48显示了柱体和方体图48:圆柱体和方体2. 交叉方体和柱体GEOMETRY - VOLUME - BOOLEAN OPERATIONS R打开Intersect Real Volumes窗口。a) shift+左键在图形窗口中选中方体。b) 在图形窗口中选定柱体。c) 点击Apply来接受选择。当你交叉两个体积的时候选定它们的顺序是无关紧要的。柱体会被修正以使方形内的体积保留下来,如图49所示。图49:柱形剩下的1/4第7步:生成燃烧室的腔体1. 为腔体生成一个方体。GEOMETRY - VOLUME - CREATE VOLUME 打开Create Real Brick窗口。a) 键入方体的Width为20,Depth为30,Height为40。b) 通过选择Direction右边的菜单选项,改变Direction为+X +Y -Z。c) 点击Apply。2. 点击Global Control工具条顶部的FIT TO WINDOW按钮来观察生成的方体。3. 合并方体和柱体为一个整体。GEOMETRY - VOLUME- BOOLEAN OPERATIONS R打开Unite Real Volumes窗口。a) shift+左键在图形窗口选中柱体。b) 选中方体并点击Apply来接受选择。当你合并两个体积的时候选定它们的顺序是无关紧要的。方体会和柱体如图410一样的合并在一起。图410:连接在一起的方体和柱体第八步:融合腔体的边1. 融合腔体的两个边以形成一个更光滑的形状。GEOMETRY - VOLUME - BLEND VOLUMES 打开Blend Volumes窗口a) 在Define Blend Types下点击Edge钮打开Edge Blend Type窗口shift+左键选中要融合的两个边,如图411所示。图411:要融合的边在Edge Blend Type窗口中Options下选择Constant radius round(默认)。在Radius中键入值5。在Edge Blend Type中点击Apply后关闭窗口。b) 在图形窗口中shift+左键选中体积。c) 在Blend Volumes窗口中点击Apply。具有光滑边界的燃烧室的几何结构如图412所示。图412:具有光滑边界的燃烧室第九步:几何结构的分解在这个模型中,简单的选中它并用六面体网格法进行网格化是不可能的。Cooper要求的所有“源”面是拓扑平行的,并且其余的面也可以用map或submap来进行网格化。但由融和连接操作产生的曲面不适合cooper标准。因此,你需要把几何体分解成适合cooper的几个部分,在GAMBIT中有许多分解几何体的方法。在这个例子中,你可以采用把那些挨着弯面的体积部分从主体积中分开的方法。要这样做,你需要在两个融合边的连接处生成一个点,那么你就可以利用这个点来生成一个直边,并用这些边来生成一个面。这个面将会被从两个方向扫描以生成两个体积,这两个体积将会被用来把燃烧室分为三部分。这样就可以用cooper来对他们分别进行网格化。1. 在容积中生成一个点GEOMETRY - VERTEX - MOVE/COPY/ALIGN VERTICES 打开Move / Copy Vertices窗口a) 选中在图413中标为A的点。要放大视图窗中的某个面积,按下ctrl键并用鼠标左键在你想要观察的面积处拖出一个框。b) 在Move / Copy Vertices窗口中的Vertices下选Copy。c) 在Operation下选Translate(默认)。d) 在Global下键入矢量(0,0,-5)。e) 点击Apply。这个点在视图窗中显示为在两个融合边相遇处附近的白色号。见图414中的点B。图413:要复制的点2. 用这个新点生成两个直边。GEOMETRY - EDGE - CREATE EDGE 打开Create Straight Edge窗口a) shift+ 左键选中图414中的点A。图414:为生成边选定的顶点b) 依次shift+ 左键选中图414中的点B和C。c) 点击Apply来接受选中的点并生成两个边。这些边如在图415所示。图415:两个新的直边3. 用这两个新边生成一个面。GEOMETRY - FACE - FORM FACE 打开Create Face From Wireframe窗口。a) shift+ 左键选中图416中的边D。图416:用来生成面的边b) shift+ 左键选中图416中的边E和F。c) 点击Apply来接受选中的边并生成一个面。4. 由选定的新面生成一个体积并沿一个边定出的方向对它进行扫描。GEOMETRY - VOLUME - FORM VOLUME R打开Sweep Real Faces窗口a) shift+左键选中视图窗中的新面。 Shift中键取消对一个面的选中并选定该面的下一个面。b) 左键点击Edge右边的列表框以激活它c) 选中图417中标为G的边。注意:在这个边上将会出现一个红色箭头,指明面应沿这个方向进行扫描。这个箭头应指向离开被选面的方向,如果不是,点击Sweep Real Faces窗口中的Reverse钮来反转箭头和扫描的方向。图417:用于扫描面的边d) 点Apply来扫描这个面。通过扫描生成的体积如图418所示。图418:平行于一边扫描平面来生成一个体积可以看到由Sweep Real Faces操作生成的体积延伸到了燃烧室框体之外。 5. 从相反的方向扫描同一个面a) 选中图419中标为H的面b) 点击Edge右边的列表框以激活它图419:用于扫描平面的面和边c) 选中图419中标为J的面。d) 点击reverse以把这个边的方向反过来。注意:同样这个边上的箭头应指向背离这个选定面的方向。e) 点击Apply。通过扫描生成的容积见图420图420:平行于一边扫描平面来生成第二个容积6. 用两个小的体积把大的燃烧体分开如果你把一个体积从另一个中分开,则会生成如下体积 通过交叉产生的公共区域对应的体积; 从第一个中减掉第二另一个产生的区域对应的体积。换句话说,分开一个容积会产生相交和布尔减法运算的组合体。选定容积的顺序很重要。例如,图421示出了用容积B去分开A和用容积A去分开B的不同。图421:分割体积GEOMETRY - VOLUME - SPLIT/MERGE VOLUMES 打开Split Volume窗口。a) 选中图形窗中的大的燃烧室几何体图形。b) 用Split With工具选Volume。c) 在Split With Volume右边的列表框中左击以激活它。d) 选中用扫描面法生成的第一个容积。e) 点击Apply。GAMBIT会用两个小容积(它们是相互连在一起的)去把大燃烧室分成三个小容积,三个容积由共同的几何体相连。7. 去掉多出的容积Split Volume操作产生两个多余的外部体积,它们位于燃烧室框体的边界之外,在Split Volume操作中,GAMBIT去掉了由双向分割volume.4所生成的外部容积但保留了双向分割volume.5所生成的容积(标为volume.6)。作为结果,volume.6必需手动去除。GEOMETRY - VOLUME - DELETE VOLUMES 打开Delete Volumes窗口a) 选中这个多余容积(volume.6)。b) 点击Apply。现在这个最终分解好的燃烧室几何体已为网格划分做好了准备(如图422)。图422:分解后的燃烧室几何结构第十步:生成一个非结构化六面体网格在这个指导书中的网格划分部分将用到: cooper工具。 面网格化方法。 可变全局网格密度。用cooper工具去把整个模型自动网格化成均匀网格是可行的。但这份指导书却展示了一些网格密度和网格划分方法的控制方法。典型的,如果某个标准不符合的话,cooper工具将在所有的源面上运用Pave网格划分法。关于GAMBIT网格化分工具的详细内容参阅GAMBIT Modeling Guide。这两个小容积将先被用Cooper网格化法来进行划分,对于剩下的体积,你可以先网格化一些面。在这个例子中,你可以先用Tri Primitive格式和更小的网格尺寸来对小的1/4圆面进行网格化。相似的,你也可以用一个细致的mapped网格对入口环面进行网格化。无论如何,为了保证1/4圆面和环面之间的面有一个mapped(或submapped)网格,这对Cooper是必需的,你应在环面之前对它进行网格化。最后,你可以用自动Cooper工具对剩余的面和容积进行网格化。1. 对一个小容积生成网格。MESH - VOLUME - MESH VOLUMES 打开Mesh Volumes工具窗口。a) 选中燃烧室顶部的容积。要选中的容积如图423所示。图423:燃烧室顶部容积上用Cooper格式进行网格划分的面这个例子并不完全符合Cooper的标准。这是因为GAMBIT不会对容积的背面用Map或Submap法自动进行网格划分,因为根据End点类型自动分类造成一个面拐角处的角度并不足够接近90度,而这是在有四个边的面中用Map进行网格划分的要求。你可以通过选定这个容积并手动选择这些源面(那些表面网格将会被在容积中进行扫描以形成容积单元的面)来强制GAMBIT运用Cooper方法。当你点击Apply时,GAMBIT将强制在并不准备用Map或Submap的侧面上运用Submap法,并且会改变点的类型以适应选择的方法。要了解更多关于网格化分方法使用的内容,参阅GAMBIT Modeling Guide 。b) 在Mesh Volumes窗口下的Scheme中的Elements选择Hex,从Type菜单中选Cooper。c) 左击Source列表条框(它会变黄)选中图423中的K面和L面作为Source面。这些面在这个容积的相反的末端。注意:如果你选错了面,你需要的面在你选定的面后面,你可以用shift+中键点击所选的面以去除它,并选择你所要的面,你也可以点击Mesh Volumes窗口中的Reset去重新设置你需要的东西。d) 保留Mesh Volumes窗口中的Spacing下面的Interval size默认值为2。可以注意到你设的这个步长与在第二步中默认的一致。e) 点击窗口底部的Apply。可以看到在GAMBIT网格化容积之前,所有的面先被网格化。如图424所示图424:燃烧器第一个小容积的网格生成2. 对燃烧室几何结构的另一个小容积生成网格。a) 在燃烧室几何体的侧面选择这个小容积。要选择的容积如图425所示图425:燃烧器侧面的容积上要用cooper格式进行网格化分的面b) 在Mesh Volumes窗口中Scheme下的Elements选择菜单中选择Hex,从Type菜单中选Cooper。c) 左击Source列表框(变黄)选中图425中的M面和N面作为Source面。这些面在这个容积的相反的末端。注意:如果你选错了面,你需要的面在你选定的面后面,你可以用shift+中键点击所选的面取消选定,并选择后面的面。你也可以点击Mesh Volumes窗口中的Reset来取消所有面的选定,然后选择正确的面。d) 保留Mesh Volumes窗口中的Spacing下面Interval size的默认值为2。点击窗口底部的Apply。网格如图426所示图426:燃烧器几何结构中第二个小容积的网格下面,对燃烧室入口和燃烧室腔体结合处的面以及燃烧器入口处的面进行网格化。在GAMBIT中你可以通过选择一种网格化方案和步长来对容积的源面进行“预网格化”,以提高最终网格化的质量。3. 对燃烧室入口和燃烧室腔体结合处的面进行网格化。MESH - FACE - MESH FACES 打开Mesh Faces工具窗口。a) 选中图427中标为P的面。注意到GAMBIT会自动在Mesh Faces窗口中选择Tri Primitive格式。要了解更多关于Tri Primitive格式地内容,可参阅GAMBIT Modeling Guide。图427:燃烧室几何结构中要进行网格划分的面b) 在Spacing下面的Interval size中键入0.5,点击Apply。网格划分后的面见图428图428:小界面上的网格4.对沿燃烧室入口的曲面进行网格化。a) 选中图427中标为Q的面。GAMBIT将自动选择Mesh Faces窗口中的Map格式。要了解更多关于Map格式的内容,可以参阅GAMBIT Modeling Guide。b)保留Spacing下面的Interval size默认值为2,点击窗口底部的Apply。网格划分后的面见图429图429:沿燃烧室入口的曲面上的网格5.对燃烧室入口处的面进行网格化。a) 选中图427中标为R的面。GAMBIT将在Mesh Faces窗口中自动选择Map格式。b)在Spacing下面的Interval size中键入1,并点击窗口底部的Apply。网格划分后的面见图430图430:燃烧室入口处界面上的网格6.对燃烧室其余的容积进行网格化。MESH - VOLUME - MESH VOLUMES a) 在图形窗口中选中燃烧室几何体剩余的容积。GAMBIT将自动选择Cooper格式作为网格化工具并在Spacing下的Interval size中用2作为默认值。它将自动选择它需要的源面生成Cooper网格,见图431中穿过X轴的标为S的面。图431:用于cooper网格划分的源面b) 点击Mesh Volumes窗口底部的Apply。这将接受你选择的容积作为要网格化的容积,且GAMBIT为Cooper网格化方案选出了源面,并开始了网格划分。完整的网格如图432所示。注意到在图432中用打开了hidden line removal功能以使网格更便于观察。要打开hidden line removal功能,在Global Control工具栏中的RENDER MODEL命令按钮上点鼠标右键,并从结果列表中选。要取消hidden line removal功能来查看网格图形,重新选择即可。图432:燃烧室几何结构的容积网格划分7.可以使用Global Control工具框中的RENDER MODEL命令按钮来观察网格的阴影视图。a) 在RENDER MODEL命令按钮上按下鼠标右键,并从弹出的列表中选择。b) 旋转这个容积以观察网格。c) 完成后通过在Global Control中选择命令按钮R.返回到wireframe 视图模式。第十一步:检测网格质量1. 在Global Control工具栏的右下部选择EXAMINE MESH命令按钮。打开Examine Mesh窗口在此窗口顶部默认选择的3D Element为方体。a) 在Display Type下选Plane选项。b)在Quality Type菜单中选EquiAngle Skew。c)在X滑行框上按下鼠标左键,拖动它以观察具有不同x 值时的网格切片。图433出示了一个例子。当你拖动滑行框的时候,网格作为一个线框(默认)被画出,当你放开滑行框时,它会被EquiAngle Skew变为彩色。当你通过x值扫描一个平面的时候,你可以看到Cooper工具内部自动分解容积的方法,以用六面体元素法对它进行网格化。图433:x方向的网格切片d)用Y和Z滑行框观察y和z方向的切片视图。e)在Display Type下选Range,用鼠标左击在Examine Mesh窗口上部出现的柱状条,以使特定数量范围内的单元具有高亮度。图434示出了如果你点击柱状条左边的第五个将会在视图窗中出现的视图(代表具有0.40.5斜度值的单元),这些最大斜度的低值表明了这些网格是可以接受的。这个由柱状体组成的视图代表了具有特定Quality Type的网格元素的静态分布。状态条上的每一个竖条对应于一组质量的上下限。徒434:具有指定质量范围的网格f)点击Examine Mesh窗口底部的Close钮来关掉它。第十二步:设置边界类型1. 在设置边界类型前把图形中的网格移走。这会使几何图形的边和面更易于观察。网格并没有被删除,仅仅是从视图窗中移走了。a)在the Global Control工具窗口底部点击SPECIFY MODEL DISPLAY ATTRIBUTES命令钮。b)在这一窗口的底部附近Mesh的右部选择菜单中选中Off 。c)点击Apply并关闭此窗口。2.为燃烧室设定边界层类型。ZONES - SPECIFY BOUNDARY TYPES 打开Specify Boundary Types窗口。a)定义两个速度入口.在T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文物保护中的风险评估与管理-洞察及研究
- 2025-2030跨境支付结算体系分析及数字货币试点与反洗钱合规要求变化报告
- 水培蔬菜工厂创新创业项目商业计划书
- 庆红宝种子创新创业项目商业计划书
- 幼儿教育启蒙社交与情感发展创新创业项目商业计划书
- 房地产法律事务顾问创新创业项目商业计划书
- 油菜籽产业循环经济模式创新创业项目商业计划书
- 展览衍生品市场推广创新创业项目商业计划书
- 生物安全岗前培训 试题及答案解析
- 教师培训需求分析:2025年教育机构师资培养方案
- 2025+CSCO胃癌诊疗指南解读
- 一级消防工程师消防安全技术综合能力考试真题卷(2025年)
- 南通市2025届高三第二次调研测试语文试题含答案
- 《科研经费管理》课件
- 成都市商品房购买(预售)合同标准版5篇
- 腹膜透析护理科普宣教
- 银行卡借用协议
- 二年级道德与法治上册 第四单元 我们生活的地方 16 家乡新变化教学实录 新人教版
- 食堂经理年度工作总结
- 小米生态链企业的协同发展与供应链优化
- 2025年湖南工程职业技术学院单招职业适应性测试题库必考题
评论
0/150
提交评论