空气动力学基本概念:流场:流场中的分离与再附着现象_第1页
空气动力学基本概念:流场:流场中的分离与再附着现象_第2页
空气动力学基本概念:流场:流场中的分离与再附着现象_第3页
空气动力学基本概念:流场:流场中的分离与再附着现象_第4页
空气动力学基本概念:流场:流场中的分离与再附着现象_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

空气动力学基本概念:流场:流场中的分离与再附着现象1空气动力学基本概念:流场基础理论在空气动力学中,流场基础理论是理解流体如何在物体周围流动的关键。本教程将深入探讨流体的连续性方程、动量方程和能量方程,这些方程是描述流场行为的数学模型。1.1流体的连续性方程1.1.1原理连续性方程基于质量守恒定律,即在没有质量源或汇的情况下,流体通过任意封闭表面的净质量流量为零。在流场中,这意味着流体的密度和速度的乘积在任意点的散度为零。1.1.2内容连续性方程可以表示为:∂其中,ρ是流体的密度,v是流体的速度向量,∇⋅1.1.3示例假设我们有一个二维流场,流体的密度和速度随时间和空间变化。我们可以使用Python和NumPy库来求解连续性方程。importnumpyasnp

#定义流体密度和速度

defrho(x,y,t):

return1.2+0.1*np.sin(2*np.pi*x)*np.cos(2*np.pi*y)*np.sin(2*np.pi*t)

defv_x(x,y,t):

return10*np.cos(2*np.pi*x)*np.sin(2*np.pi*y)*np.cos(2*np.pi*t)

defv_y(x,y,t):

return10*np.sin(2*np.pi*x)*np.cos(2*np.pi*y)*np.sin(2*np.pi*t)

#定义网格和时间步长

x=np.linspace(0,1,100)

y=np.linspace(0,1,100)

t=0.0

#计算连续性方程

dx=x[1]-x[0]

dy=y[1]-y[0]

dt=0.01

rho_t=(rho(x,y,t+dt)-rho(x,y,t))/dt

rho_vx=(v_x(x+dx,y,t)-v_x(x-dx,y,t))/(2*dx)

rho_vy=(v_y(x,y+dy,t)-v_y(x,y-dy,t))/(2*dy)

continuity=rho_t+rho_vx+rho_vy

#输出结果

print("连续性方程的解:")

print(continuity)1.2流体的动量方程1.2.1原理动量方程基于牛顿第二定律,描述了作用在流体上的力如何改变流体的速度。在流场中,动量方程通常表示为纳维-斯托克斯方程。1.2.2内容纳维-斯托克斯方程可以表示为:ρ其中,v是流体的速度向量,p是压力,τ是应力张量,f是体积力。1.2.3示例假设我们有一个一维流场,流体的速度和压力随时间和空间变化。我们可以使用Python和SciPy库来求解纳维-斯托克斯方程。importnumpyasnp

fromegrateimportsolve_ivp

#定义流体速度和压力

defv(x,t):

return10*np.sin(2*np.pi*x)*np.cos(2*np.pi*t)

defp(x,t):

return100*np.sin(2*np.pi*x)*np.sin(2*np.pi*t)

#定义动量方程

defmomentum(t,y):

x=y[0]

vx=y[1]

return[vx,-1/1.2*(np.gradient(p(x,t),x)[0]-0.1*np.gradient(vx,x)[0])]

#定义初始条件和时间范围

y0=[0.5,10]

t_span=(0,1)

#求解动量方程

sol=solve_ivp(momentum,t_span,y0,method='RK45',t_eval=np.linspace(0,1,100))

#输出结果

print("动量方程的解:")

print(sol.y)1.3流体的能量方程1.3.1原理能量方程描述了流体内部能量的守恒,包括动能、位能和内能。在流场中,能量方程通常用于计算流体的温度变化。1.3.2内容能量方程可以表示为:ρ其中,T是温度,cp是定压比热,k是热导率,ϕ1.3.3示例假设我们有一个三维流场,流体的温度随时间和空间变化。我们可以使用Python和SciPy库来求解能量方程。importnumpyasnp

fromegrateimportsolve_ivp

#定义流体温度

defT(x,y,z,t):

return300+10*np.sin(2*np.pi*x)*np.cos(2*np.pi*y)*np.sin(2*np.pi*z)*np.cos(2*np.pi*t)

#定义能量方程

defenergy(t,y):

x=y[0]

y=y[1]

z=y[2]

T=y[3]

return[0,0,0,-1/1.2/1000*(np.gradient(k*np.gradient(T(x,y,z,t),x)[0],x)[0]+np.gradient(k*np.gradient(T(x,y,z,t),y)[0],y)[0]+np.gradient(k*np.gradient(T(x,y,z,t),z)[0],z)[0])]

#定义初始条件和时间范围

y0=[0.5,0.5,0.5,300]

t_span=(0,1)

#求解能量方程

sol=solve_ivp(energy,t_span,y0,method='RK45',t_eval=np.linspace(0,1,100))

#输出结果

print("能量方程的解:")

print(sol.y)请注意,上述示例中的代码仅用于说明目的,实际应用中需要根据具体问题调整参数和方程。在求解流场中的连续性、动量和能量方程时,通常会使用更复杂的数值方法和软件工具,如CFD(计算流体动力学)软件。2空气动力学基本概念:流场中的分离现象2.1边界层的概念边界层理论是空气动力学中一个重要的概念,它描述了流体在固体表面附近的行为。当流体(如空气)流过一个物体时,流体与物体表面的摩擦力会导致流体速度在紧邻表面的区域内逐渐减小,直至在表面处速度为零。这个速度从零逐渐增加到自由流速度的区域,我们称之为边界层。边界层可以分为两种类型:层流边界层和湍流边界层。层流边界层中,流体流动是有序的,流线平行于物体表面;而在湍流边界层中,流体流动是混乱的,存在大量的涡旋和混合。边界层的类型对流体分离点的位置有重要影响。2.1.1示例假设我们有一个平板,其长度为1米,宽度为0.1米,空气以10米/秒的速度流过。我们可以使用边界层理论来估算边界层的厚度。δ其中,δ是边界层厚度,ν是空气的动力粘度(约为1.5×10​−5m​2/s),x对于x=1米,我们可以计算边界层厚度importmath

#定义参数

nu=1.5e-5#空气的动力粘度,单位:m^2/s

U=10#自由流速度,单位:m/s

x=1#流动距离,单位:m

#计算边界层厚度

delta=math.sqrt((2*nu*x)/U)

print(f"边界层厚度约为:{delta:.6f}米")这段代码计算了边界层的厚度,展示了边界层理论在实际问题中的应用。2.2分离点的确定流体在物体表面的流动可能会遇到逆压梯度,即流体流动方向上的压力逐渐增加。当逆压梯度足够大时,边界层内的流体可能会减速至零,然后反向流动,形成所谓的分离点。分离点之后的流体不再紧贴物体表面流动,而是形成一个分离涡,这会显著增加物体的阻力。确定分离点的位置通常需要通过流体动力学的数值模拟或实验方法。在数值模拟中,可以使用计算流体动力学(CFD)软件来模拟流体流动,通过分析流体速度和压力分布来确定分离点。2.2.1示例使用CFD软件(如OpenFOAM)进行流体流动模拟,可以输出流体速度和压力分布,从而确定分离点。以下是一个使用OpenFOAM进行简单流体流动模拟的命令示例:#运行OpenFOAM的求解器

foamSolver-case<caseName>-solversimpleFoam

#分析结果,确定分离点

postProcess-func"wallShearStress()"-case<caseName>在实际操作中,需要根据模拟结果分析壁面剪切应力分布,剪切应力为零的点即为分离点。2.3分离的原因分析流体分离的原因主要与逆压梯度和边界层的性质有关。逆压梯度会导致边界层内的流体减速,当流体速度减小到一定程度时,边界层内的流体无法克服逆压梯度,从而发生分离。此外,边界层的湍流程度也会影响分离点的位置。湍流边界层比层流边界层更能抵抗逆压梯度,因此湍流边界层的分离点通常比层流边界层的分离点更靠后。2.3.1示例考虑一个圆柱体在均匀流中,随着雷诺数的增加,流体流动从层流转变为湍流,分离点的位置也会发生变化。雷诺数(Re)是流体流动中一个重要的无量纲数,定义为:R其中,U是自由流速度,L是特征长度(如圆柱体的直径),ν是动力粘度。通过改变雷诺数,我们可以观察到分离点位置的变化。在低雷诺数下,流体流动为层流,分离点位置较前;而在高雷诺数下,流体流动为湍流,分离点位置较后。#定义参数

U=10#自由流速度,单位:m/s

L=0.1#圆柱体直径,单位:m

nu=1.5e-5#空气的动力粘度,单位:m^2/s

#计算雷诺数

Re=(U*L)/nu

print(f"雷诺数为:{Re:.2f}")通过调整U和L的值,可以改变雷诺数,从而观察分离点位置的变化。这有助于理解分离现象与流体动力学参数之间的关系。以上内容详细介绍了流场中的分离现象,包括边界层的概念、分离点的确定以及分离的原因分析。通过理论分析和示例代码,我们展示了这些概念在实际问题中的应用。理解流体分离现象对于设计高效、低阻力的飞行器和汽车等交通工具至关重要。3空气动力学基本概念:流场中的分离与再附着现象3.1流场中的再附着现象3.1.1再附着点的定义在空气动力学中,流体绕过物体表面时,由于物体表面的几何形状、流体的粘性以及流速等因素,流体可能会从物体表面分离,形成所谓的分离流。当分离流在物体下游某处重新贴附到物体表面时,这个重新贴附的位置被称为再附着点。再附着点的确定对于理解物体周围的流场特性、预测阻力和升力等空气动力学参数至关重要。3.1.2影响再附着的因素再附着点的位置受到多种因素的影响,主要包括:物体几何形状:物体的形状直接影响流体的流动路径,尖锐的边缘或突变的曲率会导致流体分离,而平滑的过渡则有助于流体的再附着。流体粘性:流体的粘性越大,流体与物体表面的摩擦力越大,越容易导致分离,同时也影响再附着点的位置。流速:高速流动时,流体的惯性力占主导,容易在物体表面形成分离流;低速时,粘性力影响更大,可能促进流体的再附着。流体压力分布:流体在物体表面的压力分布不均,特别是在压力梯度较大的区域,容易发生分离和再附着现象。物体表面粗糙度:表面粗糙度增加会增加流体的摩擦阻力,可能导致更早的分离,但有时也能促进再附着。3.1.3再附着后的流场变化流体在再附着点之后的流动特性会发生显著变化,主要表现在:流动方向:再附着后,流体通常会沿着物体表面流动,方向与分离前的流动方向一致,但速度和压力分布可能有所不同。湍流强度:分离流区域往往伴随着湍流的产生,再附着后湍流强度可能减弱,但流体的湍流特性仍会影响其后的流动。阻力和升力:再附着点的位置和流体的再附着特性直接影响物体的阻力和升力。例如,再附着点越靠近物体前端,物体的阻力可能越小;而分离流区域的大小和位置则影响升力的产生。流动稳定性:再附着后的流体可能更加稳定,但也可能因为湍流的持续影响而保持不稳定状态。3.2示例分析假设我们有一个简单的二维物体,如一个圆柱体,我们使用计算流体力学(CFD)软件来模拟其周围的流场,以观察分离与再附着现象。以下是一个使用OpenFOAM进行模拟的简化示例:#设置流体属性

rho=1.225;//空气密度,单位:kg/m^3

mu=1.8e-5;//空气动力粘度,单位:Pa*s

#设置圆柱体几何参数

D=0.1;//圆柱体直径,单位:m

L=1.0;//圆柱体长度,单位:m

#设置流速

U=(6,0,0);//流速向量,单位:m/s

#创建网格

blockMeshDict

{

//网格定义

...

}

#设置边界条件

boundaryField

{

inlet

{

typefixedValue;

valueuniform(600);

}

outlet

{

typezeroGradient;

}

walls

{

typefixedValue;

valueuniform(000);

}

cylinder

{

typenoSlip;

}

}

#运行模拟

simpleFoam

#后处理分析

postProcessing

{

...

}在这个示例中,我们定义了一个圆柱体,并设置了流体的密度、动力粘度以及流速。通过blockMeshDict文件定义了计算区域的网格,boundaryField部分设置了边界条件,包括入口流速、出口压力梯度、壁面速度以及圆柱体表面的无滑移条件。运行simpleFoam命令进行模拟,最后通过postProcessing部分进行结果分析,以确定再附着点的位置和流场的变化。3.2.1结果分析模拟完成后,我们可以通过可视化工具如ParaView来观察流场的变化。通常,再附着点的位置可以通过观察流体速度矢量的变化来确定,再附着点之后的流体速度矢量将沿着物体表面流动,而分离流区域则可能显示出复杂的涡旋结构。此外,压力分布图也可以帮助我们理解再附着点对物体空气动力学性能的影响。通过上述示例和分析,我们可以更深入地理解流场中的分离与再附着现象,以及如何通过计算流体力学模拟来预测和分析这些现象。这对于设计高效、低阻力的飞行器、汽车等物体具有重要意义。4分离与再附着的案例分析4.1飞机翼型的分离与再附着在空气动力学中,流体绕过物体表面时,如果流体速度降低到一定程度,流体将无法紧贴物体表面继续流动,从而形成分离流。分离流的形成通常伴随着涡流的产生,这会增加物体的阻力并可能影响其升力。在飞机翼型设计中,分离与再附着现象是一个关键的考虑因素。4.1.1原理飞机翼型(空气动力学中的翼剖面)设计时,目标是使流体在翼型上表面和下表面的流动尽可能平滑,以减少阻力并最大化升力。分离点的位置和再附着点的位置对翼型的性能有重大影响。分离点过早会导致升力减少,而再附着点的位置则影响到分离涡流的强度和位置,进而影响飞机的稳定性。4.1.2案例分析考虑一个典型的NACA0012翼型,当飞机在高攻角下飞行时,流体在翼型上表面的分离点会向前移动,导致升力急剧下降,这就是失速现象。通过CFD(计算流体动力学)模拟,可以观察到分离与再附着的具体过程。4.1.3CFD模拟示例使用OpenFOAM进行CFD模拟,以下是一个简单的模拟设置示例:#设置求解器

solver=icoFoam

#模拟参数

timeStart=0

timeEnd=10

deltaT=0.01

#网格文件

system/blockMeshDict

#物理属性

constant/transportProperties

constant/turbulenceProperties

#边界条件

constant/polyMesh/boundary

#初始和边界条件文件

0/U

0/p在模拟过程中,可以观察到流体在翼型上表面的分离和再附着现象,通过后处理工具如ParaView,可以可视化这些流场特征。4.2汽车车身的分离与再附着汽车设计中,流体分离与再附着同样是一个重要的考虑因素,它影响着汽车的空气动力学性能,包括阻力、升力和稳定性。4.2.1原理汽车在高速行驶时,车身周围的流体流动可能会在某些区域分离,特别是在车身的后部。分离流会产生额外的阻力,降低燃油效率,并可能影响汽车的稳定性。设计时,通过优化车身形状和使用扰流板等附件,可以控制流体的分离与再附着,从而改善汽车的空气动力学性能。4.2.2案例分析以一辆典型的轿车为例,当汽车在高速行驶时,流体在车身后部的分离点和再附着点的位置对汽车的空气动力学性能有显著影响。通过CFD模拟,可以分析不同设计对流体分离与再附着的影响。4.2.3CFD模拟示例使用Star-CCM+进行CFD模拟,以下是一个简单的模拟设置示例:#创建模拟项目

project=NewProject()

#设置求解器

solver=project.GetSolution()

#定义流体区域

fluidRegion=solver.GetRegion("Fluid")

#设置边界条件

inlet=fluidRegion.GetBoundary("Inlet")

inlet.SetCondition("Velocity","100m/s")

outlet=fluidRegion.GetBoundary("Outlet")

outlet.SetCondition("Pressure","0Pa")

#设置初始条件

fluidRegion.SetInitialCondition("Velocity","0m/s")

fluidRegion.SetInitialCondition("Pressure","101325Pa")

#运行模拟

solver.Run()通过分析模拟结果,可以观察到流体在车身后部的分离与再附着现象,以及如何通过设计优化来减少这些现象的影响。4.3高速列车的分离与再附着高速列车的设计中,流体分离与再附着现象对列车的空气动力学性能和运行稳定性至关重要。4.3.1原理高速列车在运行时,车身周围的流体流动可能会在某些区域分离,特别是在列车的前部和尾部。分离流会产生额外的阻力,影响列车的运行效率和稳定性。设计时,通过优化车身形状和使用前导流板、尾翼等附件,可以控制流体的分离与再附着,从而改善列车的空气动力学性能。4.3.2案例分析以一辆高速列车为例,当列车在高速运行时,流体在列车前部和尾部的分离点和再附着点的位置对列车的空气动力学性能有显著影响。通过CFD模拟,可以分析不同设计对流体分离与再附着的影响。4.3.3CFD模拟示例使用ANSYSFluent进行CFD模拟,以下是一个简单的模拟设置示例:#导入Fluent模块

fromansys.fluent.coreimportlaunch_fluent

#启动Fluent

fluent=launch_fluent(version="2022.2")

#读取网格文件

fluent.tui.file.read_case("train_mesh.cas")

#设置求解器

fluent.tui.define.models.viscous.set_laminar()

#设置边界条件

fluent.tui.define.boundary_conditions.velocity_inlet("Inlet","100m/s")

fluent.tui.define.boundary_conditions.pressure_outlet("Outlet","0Pa")

#运行模拟

fluent.tui.solve.run_calculation.iterate(1000)

#获取结果

results=fluent.tui.report.get("Streamlines")

#关闭Fluent

fluent.exit()通过分析模拟结果,可以观察到流体在列车前部和尾部的分离与再附着现象,以及如何通过设计优化来减少这些现象的影响。以上案例分析展示了在飞机翼型、汽车车身和高速列车设计中,流体分离与再附着现象的重要性,以及如何通过CFD模拟来理解和优化这些现象。通过这些模拟,设计者可以更精确地控制流体动力学,从而提高性能和效率。5分离与再附着的控制技术5.1主动控制方法5.1.1原理与内容主动控制方法在空气动力学中主要用于抑制或延迟流场中的分离现象,以及促进再附着,从而改善气动性能。这些方法通过外部能量输入,如吹气、吸气、声波或电磁场,来改变流体的流动特性。主动控制技术可以分为以下几种:吹气/吸气控制:通过在物体表面安装吹气或吸气装置,改变边界层的流动状态,防止或延迟分离点的出现。这种方法需要精确的控制策略和足够的能量供应。声波控制:利用声波对流体的扰动作用,改变流体的流动特性,从而影响分离与再附着。声波控制可以是通过声学发生器产生特定频率的声波,也可以是通过物体振动产生。电磁控制:在流体中施加电磁场,利用电磁力改变流体的流动状态。这种方法在导电流体中特别有效,如等离子体或含有导电粒子的流体。5.1.2控制技术的应用实例吹气控制示例假设我们有一架飞机的机翼,在低速飞行时,机翼后缘会出现流体分离,导致升力下降。为了改善这种情况,我们可以在机翼后缘安装吹气装置,通过吹气来改变边界层的流动状态,延迟分离点。#假设的吹气控制策略示例

defactive_blowing_control(velocity_profile,separation_point):

"""

根据流速分布和分离点位置,调整吹气装置的吹气速度。

参数:

velocity_profile(list):流速分布数据,单位为m/s。

separation_point(int):分离点的位置,单位为cm。

返回:

blowing_speed(float):吹气装置的吹气速度,单位为m/s。

"""

#简化示例,实际应用中需要更复杂的算法

blowing_speed=0.0

ifseparation_point>0:

blowing_speed=velocity_profile[separation_point]*0.5

returnblowing_speed5.2被动控制方法5.2.1原理与内容被动控制方法不需要外部能量输入,而是通过改变物体的几何形状或表面特性来影响流体的流动,从而控制分离与再附着。被动控制技术包括:几何形状优化:通过改变物体的形状,如采用超临界翼型,来改善流体动力学性能,减少分离。表面纹理:在物体表面添加微小的纹理或突起,改变边界层的流动特性,促进再附着。涡流发生器:在物体表面安装涡流发生器,通过产生涡流来改变流体的流动状态,抑制分离。5.2.2控制技术的应用实例表面纹理控制示例在飞机机翼的表面添加微小的纹理,可以改变边界层的流动特性,减少分离,提高升力。这种纹理可以是微米级别的沟槽或突起,通过改变流体的微观流动,影响宏观的气动性能。#假设的表面纹理控制策略示例

defpassive_texture_control(roughness_profile,separation_point):

"""

根据表面粗糙度分布和分离点位置,调整表面纹理。

参数:

roughness_profile(list):表面粗糙度分布数据,单位为μm。

separation_point(int):分离点的位置,单位为cm。

返回:

texture_adjustment(list):表面纹理调整方案,单位为μm。

"""

texture_adjustment=[0.0]*len(roughness_profile)

ifseparation_point>0:

foriinrange(separation_point,len(roughness_profile)):

texture_adjustment[i]=roughness_profile[i]*1.5

returntexture_adjustment5.3控制技术的综合应用在实际应用中,主动控制和被动控制方法往往结合使用,以达到最佳的气动性能。例如,飞机机翼可能采用超临界翼型(被动控制)来减少分离,同时在关键位置安装吹气装置(主动控制)来进一步改善流动状态。5.3.1综合控制策略示例#假设的综合控制策略示例

defcombined_control_strategy(velocity_profile,roughness_profile,separation_point):

"""

根据流速分布、表面粗糙度分布和分离点位置,综合调整吹气速度和表面纹理。

参数:

velocity_profile(list):流速分布数据,单位为m/s。

roughness_profile(list):表面粗糙度分布数据,单位为μm。

separation_point(int):分离点的位置,单位为cm。

返回:

blowing_speed(float):吹气装置的吹气速度,单位为m/s。

texture_adjustment(list):表面纹理调整方案,单位为μm。

"""

blowing_speed=active_blowing_control(velocity_profile,separation_point)

texture_adjustment=passive_texture_control(roughness_profile,separation_point)

returnblowing_speed,texture_adjustment通过上述示例,我们可以看到,无论是主动控制还是被动控制,都需要对流体动力学有深入的理解,并结合具体的应用场景,设计出有效的控制策略。在实际操作中,这些策略可能需要通过实验或数值模拟来进一步优化和验证。以上内容详细介绍了空气动力学中分离与再附着现象的控制技术,包括主动控制和被动控制方法的原理、内容以及应用实例。通过这些控制技术,可以有效地改善流体动力学性能,提高飞行器的效率和稳定性。6空气动力学基本概念:流场分析与模拟6.1流场分析的基本方法流场分析是空气动力学研究中的核心部分,它涉及到对流体在物体周围流动时速度、压力、温度等物理量的分布进行研究。流场分析的基本方法可以分为两大类:数值模拟和实验流体力学方法。6.1.1数值模拟技术数值模拟技术是通过计算机求解流体力学方程来预测流场的一种方法。其中,最常用的方程是纳维-斯托克斯方程(Navier-Stokesequations),它描述了流体的运动规律。数值模拟技术包括有限差分法、有限元法、有限体积法等。有限体积法示例有限体积法是一种广泛应用于流体动力学数值模拟的方法,它基于控制体的思想,将流场划分为一系列控制体,然后在每个控制体上应用守恒定律。#导入必要的库

importnumpyasnp

fromscipy.sparseimportdiags

fromscipy.sparse.linalgimportspsolve

#定义网格参数

nx=50#网格点数

dx=1.0/(nx-1)#网

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论