fluent udf中文帮助
fluent udf中文帮助本章简要地介绍了用户自定义函数(UDF)及其在 Fluent 中的用法。在 1.1 到 1.6 节中我们会介绍一下什么是 UDF;如何使用 UDF,以及为什么要使用 UDF,Makefile udfmakefile udf2DEF INE PROPERTYDEFINE DRIFT DI AM基础输运方程单元()面,区域()和线(操作求解器数据运仃输运方程求解器建立在有限容积法的基础上,这种方法将计算域离散为有限数目的控制体或是单元。网格单元是中基本的计算单元,这些单元的守恒特性必须保证。也就是说普通输运方程,例如质量,动量,能量方程的积分形式可以应用到锊个单元:/pad+,p·dA=中 TODa+/,SwAunsteadyeonv画 ctiondiffusiongeneration此处,是描述普通输运数量的变量()根据所求解的输运方程它可取不同的值。下面是在输运方程中可求解的的子集E守恒与否需要知道通过单元边界的通量。因此,需计算出单元和面上的属性值(单元()面,区域()和线(单元和单元面被组合为一些区域(),这些区域规定了计算域(例如,入口,出口,壁面)的物理组成)。当用户使用的时,用户的叮调用流体区域或是边界区域的计算变量(需要获得适当的变量,比如说是区域参考)和单元,以便标定各个单元。区域)是一群单元或单元面的集合,它可以由模型和区域的物理特征(比如入∏,出∏,壁面,流伓区域)来标定。例如,·些被指定为面域()的单元面可以被指定为类型,由此,速度也就可指定了。线()是据结构的内部名称,可被用来指定一个区域结构可作为数据储存器米使用,这些数据对于它所表示的单元和面来说是公用的(操作多数的任务需要在一个线的所有单元和面上重复执行。比如,定义一个自定义轮廓函数()则会对一个面线上)的所有单元和面进行循环。为了用户方使向用户提供了一些循环宏工具(来执行对单元,面,节点()和线()的重复操作例如,单元循环宏()可以对给定单元线上的所有单元进行循环操作()。而面循环宏()则可调用所有给定面线()的面。提供的循环工具请见在某些情况下需要对某个变量操作,而这个变量恰恰又不能直接被当作变量来传递调用。比如,如果用户使用宏来定义,求解器将不会向它传递指针。这种情况下,用户函数需要用提供的宏来调用线指针(见求解器数据通过用户界面将函数(它已被编译和连接)连接到求解器上可实现调用求解器变量。旦和求解器正确连接,无论何时,函数都可调用求解器数据。这些数据将会被作为用户变量自动地传递给注意,所有的求解器变量,不管是求解器传递给的,还是传递给求解器的,都使用单位。运行将会在侦定时刻被调用。但是,也可对它们进行异步执行,使用宏,还可在需要时()执行。详情请见解释和编译的比较编译和的构建方式一样。脚木被用来调用编译器来构建一个当地目标代码库()。目标代码库包含高级语言源代码的机器语言翻译。代码库在运行时由“动态加载”()过程连接到上。连接后,与共亨库的联系()将会被保存在用户的文件中这样,当以后再读入文件时,此编译库将会与自动连接。这些库是针对计算机的体系结构和·定版本的使用的。所以,当更新,或计算机操作系统改变,或是在不同类型的机器上运行时,这些库必须重新构建而解释则是在运行吋,直接从语言源代码编译和装载()。在运行中,源代码被编译为中介的独立于物理结构的使用预处理程序的机器代码(被调用时,机器代码由內部仿真器(),或注释器)执行。注释器不具备标准编译器的所有功能;它不支持语言的某些原理。所以,在使用吋,有语言限制(见)。例如,不能够通过废弃结构()来获得数据。要获得数据结构,必须使用由提供的预定义宏。另一个例子是不能识别指针数组。这些功能必须由来执行。编译后,用户的函数名称和内容将会被储存在文件中。函数将会在读入文件时被自动编译。独立于物理结构的代码的外层()叮能会导致执行错误(),但却可使共亨不同的物理结构,操作系统,和版本。如果运行速度较慢,不用被调节就可以编译代码的形式(运行中的和请见选择或是时,注意以下内容:对其它平台是便捷的(可作为()来运行不需编译器。慢需要较多的代码。在使用语言上有限制。不能与编译系统或用户库()连接。只能使用预定义宏来获得结构中的数据。(见和)比运行快在使用语言上不存在限制可用任何编译器编译。能调用以其他语言编写的函数机器物理结构需要用户建立的每个版本的共享库(如果包含有注释器()不能处理得语言元素,则不能作为)运行总的来说,当决定使用那种类型的时使用作为简单的函数使用作为复杂的函数,这些函数对有较大要求(例如每次运行时,在每个单元上均须调用的属性需要使用编译库一个例子编辑代码,并且在用户的模型中有效使用它,须遵循以卜七个基木步骤定义用户模型。编制语言源代码。运行读入,并设置文件。编译或注释()语言源代码。在中激活开始计算。分析计算结果,并与期望值比较。在开始解决问题前,用户必须使用定义希望解决的问题()。例如,加入用户希望使用来定义一个用户化的边界条件()。用户首先需要定义一系列数学方程来描述这个条件。接下来用户需要将这些数学方程(概念设计)用语言写成一个函数)。用户可用文本编辑器米完成这一步。以为后缀名米把这个文件保存在工作路径下。写完语言函数后,用户即可运行并且读入或设置文件()。对C语言源代码进行注释,编译,和调试),并在中激活用户函数()。最后,运行计算(),分析结果并与期望值比较。()。根据用户对结果的分析,可将上述整个过程重复几次。具体如下。定义用户模型生成和使用的第一步是定义用户的模型方程。如图所示的涡轮叶片。模拟叶片冑围的流玚使用了非结构化网格。计算域由底端的周期性边界()延伸到顶端的相同部分(),速度入口在左边,压力出口在右边。Irvine ua〔15512405危e893nde5)文中对入口速度为常数分布和抛物线分布的流场进行了比较。分段线性的分布可由边界场选项得到(),而多项式分布则只能使用用户自定义函数得到。进口速度为常数()的结果如图1.7.2和1.7.3所示。当流动沿着涡轮叶片进行时,初始速度场被改变了。了4101265105 tces. 89E.11电+01Turbine vane〔1551cl,2405他e,的93nde引假定现在要设涡轮叶片入∏速度不是常数值,其分布如下2un=20-2000745士变量在入口中心处为0.0,在入口上部和下部则分别为而入口中心处的速度为边界上为0。用户可用描述这一分布,并将它应运到模型中来解决这类问题。编制语言源代码。选定方程定义后,用户可用任意文本编辑器来书写C语言代码。以扩展名保存源代码文件保存到工作路径下。关于的书写请参考下面是一个怎样在中应用方程的例子。的功能由主要的宏()米定义。此处,宏用来表示下面的代码旨在给求解器捉供边界的轮廓信息。书中将在以后部分讨论其它的宏宏的第一个变量用来定义速度入口面板中的函数。名称可任意指定。在给定的边界区域上的所有单元面()上将会使用函数的这个方程。当用户在用户界面选定作为边界条件时,将会自动定义线()。下标由应用程序自动定义。中被用来形成对边界区域上所有单元面的循环()。对于每个面,面的质心()的坐标可由宏来获得。抛物线方程中用到了坐标,速度值通过宏来返回给面。宏和宏都是提供的宏。详情请见5读入,并设置文件建立后,用户开始设置在工作路径下启动读入(或设置)文件(如果文件以前设置过,请确认它是否被保存在了工作路径编详或注释()语言源代码这部分将例中的源代码作为来编译。注意,这个例子不可应用于的并行网络()。完整的编译和连接请见确认的文件(如果以前设置过)和语言源代码在工作路径卜。用面板编译例如, ud fexamp leInterpreted UDFSSource file rlameample+CCPP Command nameStack sizeH Display Assembly ListingH Use Contributed CPPCompilecospHelp在下键入语言源代码文件例如, udfexample.c。如果用户源代码不在目前工作路径下,则在编译,需在面板中间如文件完整的路径。在栏里,选择预处理器。省设置为如果用户函数的局部变量数目大于将会导致堆栈溢出。这种情況下,应将设置为比局部变量大的数
- 2020-11-04下载
- 积分:1
卡尔曼滤波
提供了kf,ekf,ukf的详细推导过程,从标量推导开始,进而转入矢量推导,非常详细卡尔曼滤波器简介(阎泓著第一步、时间更新29第二步、测量更新“““““““+““44““““42924特殊情况.30第一种情况、先验误差极小...-.----130第二种情况、先验误差极大.30第三种情况、测量噪声极大.…31第三章、标量EKF画,通通画4“““““+44=“++“““++4“4“+“4“““-“++323.1非线性状态模型.323.2模型线性化33.2.1过程噪声项的线性化.333.2.2测量噪声项的线性化...11-343.2.3过程和测量噪声项同时线性化…35324过程的线性化…0353.25测量的线性化…363.3EKF滤波器…1373.31应用卡尔曼滤波器.3733,2计算先验均方差373.33计算后验均方差373.3.4计算k值4a“44444“;4444454a44“44444=424444441“如44444;44444“44.45“#4444444a444444443833.5k值为最优时的后验均方差3834算法39第一步、时间更新………9第二步、测量更新393.5EKF的缺陷44“==++++4=++44日+“44=“““+440第四章、矢量EKF4141非线性矢量状态模型4142矢量模型线性化单“““·***“““***“““““***“““***4““-***4““*“→“““*→*-““““““*“““*+4““→*“·““·““““*4242.1矢量泛函的泰勒展开42.2过程噪声项的线性化424.2.3测量噪声项的线性化.→“““#+4+“44“““-4+44→“““4“4+-““+43424过程和测量噪声项同时线性化4442.5过程的线性化4“““4““*“4““*→““*+“4“““““““*4“““4“““++4““44“““4“44““““七426测量的线性化“““““·+““““*““““+“““““““+4“““““““+4“““→·“““+“4543矢量EKF滤波器面面面面46画面和面面,43.1应用矢量卡尔曼滤波器44““++“44“““*44“““++444““4+444“+“44““““+444643.2计算先验均方差4643.3计算后验均方差4““+44““““44““““+→4““““+4““““4“44““““.47434计算k值47435k值为最优时的后验均方差4845算法“““+““““*“““““+…““““*“+44““48第一步、时间更新.…49第3页(共77页)卡尔曼滤波器简介(阎泓著第二步、测量更新““4--““44-4494.4特殊情况.““““4444“画画新通画通49第一种情况、先验误差极小.画画,画画画园画画,画画画面请通.50第二种情况、先验误差极大….----50第三种情况、测量噪声极大44“““+44““=++“44“““+444““4+“44““44+50第五章、标量无迹变换UT5251无迹变换的任务5252真值“““““++“++4“4“““+4“++4“““““+““+“““““525.3无迹测试点1101453.1标量的无迹测试点………154532无迹权重系数翻国口道55533统计性质公式…5554测试点的无迹变换.565.4.1从测试点得到后验期待值.画画通通画画山通画画新56542从测试点得到后验方差“““+4“++“4“++““平““上“““4““平中“+““““平“4+“=575.5讨论品aB444a日日+44日4日日“4日a4日+a日本“日日日和本上日和4日““458第六章矢量无迹变换UT4“““4“44“““4++44“““4+““4+2+“++“4“++4=“++“““2++““““++““4+““““++5961矢量微分回顾5961.1计算真值会用到的恒等式1962矢量无迹变换的任务中本““丰二“中““6063真值6163无迹测试点63.1矢量的无迹测试点画面通自品面画画面自自通国画日画面国通画日通山国国画山山面通画山山丽右日日画画画画画山63632无迹权重系数64633UT变换下的对称性64测试点的无迹变换6564.1几个恒等式…65642从测试点得到后验期待值.…---1----66642从测试点得到后验协方差.6765讨论68第七章、无迹滤波器UKF11116971高维非线性问题.069711标量特例画画画画画画新画画画画画画““*#“““““44“…4“““““4““+““→““““44““47072无迹滤波器面,面面面面面面面“面画70721无迹测试点““*4“““““44““+44““““*44“““++444“““4““+“44“““““722无迹权重系数通画画通画画通通画画通山请画画画画画画出画请画画副。723先验估计画画·画‘画4““+44““““44““““+→4““““+““““+“444““““+472724应用卡尔曼滤波器737.2.5计算后验均方差…737.2.6计算k值…444““+44“““*447473算法75第4页(共77页)卡尔曼滤波器简介(阎泓著第零步、初始化..-75第一步、时间更新175第二步、测量更新画画,画画画园画画,画画画面请通176第5页(共77页)卡尔曼滤波器简介(阎泓著第一章、标量线性系统实际工作中的线性系统很少有标量的,但是标量的卡尔曼滤波器的理论推导比较直观、易于理解,因此作为学习的切入点比较合适首先必须清楚地陈述卡尔曼滤波器要解决的问题。1.1卡尔曼问题在离散时间中,一个标量线性系统的状态演化常常可以表述为下面的随机差分方程式:x=ax,+bu其中t为时间。x,是一个标量随机变量,代表t时刻系统的内禀状态。a和b为常标量。u,为t-1时刻的输入,也是一个标量。111信号流程图上面的(1)式也可以用下面的信号流程图表示u-1)X()Ibax(t-1)直线表示信号的传送,箭头代表传送的方向。流程图中的图标有三种,第一种方框图标代表时间延迟,见下图x(t)TX(t-1)第二种方框图标代表乘法(增益),见下图第6页(共77页)卡尔曼滤波器简介(阎泓著aax第三种圆形图标代表加法(混合),见下图a-b+CbG这些图标可以按照有意义的方式组合起来,描述一个差分方程。必须指出,这些图标并不局限于标量情形,而且适用于矢量情形,譬如x为一个矢量,而a和b可以为矩阵。112加入白噪声假设在这个线性过程中有一个噪声项v鬟x2=ax21+bu-1+W1-1则此方程式可以用下面的信号流程图表示w(t=1)u(-1)中+baX(-1)假定这个噪声ν是一个高斯白噪声,它满足3N(9),(Q20)〈ww)=0(≠)3在本文采用物理学中常用的记号,(x)=E(x)表示x的期待值第7页(共77页)卡尔曼滤波器简介(阎泓著此外假定w与u.没有关联,也即113加入可测量假设系统的状态量x是不可以直接测量的。可以测量的是另外一个量z,称为可测量。可测量z依赖于系统的状态量x和一个激励倍数h,见下式。hx. +v(5)在实际工作中h可能会随着时间而变化,但在这里假定为常数,为常标量。此时流程图如下。wt-1)u(t-1)+b±2(ax(t-1)测量过程本身带有一个噪声ν,影响了测量的准确度。同样我们假定ν是一个白噪声(,R)(R≥0)(")≥=0(s≠)此外假定ν与w和u都没有关联,也即()=v)=0(s1)114卡尔曼问题陈述现在要考虑的是如何从可观测量z;的观测数据中得出x的最优估计值,把噪声w和v尽最大可能过滤出去,把它们的影响减到最小。这就是卡尔曼滤波器要解决的问题。1.2标量卡尔曼滤波器卡尔曼对这个问题的解答就是卡尔曼滤波器。下面的流程图可以分成上下两个部分:上半部分就是问题本身,下半部分就是卡尔曼滤波器。第8页(共77页)卡尔曼滤波器简介(阎泓著u(-1)X()bh+(aX(t-1)bb(()2()+ak文-b)+Residual在图中,z1代表实际测量值,x代表过程的真值。此外在卡尔曼滤波器的流程图中出现了几种新的符号,分别是x代表先验估计( A priori estimate),和E代表后验估计(A posteriori estimate)4.对一个随机变量当前值的先验估计是根据前一个时刻以及更早的历史观测信息所作出的估计:后验估计是根据当前时刻以及更早的历史观测信息所作出的估计。x1的先验估计是由上一个时间点的后验估计值和输入信息给出的,x,=ax+ bur-p卡尔曼使用x的先验估计给出可测量E的(先验估计)预测5,而z,的实际测得值与预测值之间的差称为滤波过程的革新( nnovation)或者残余( Residua,即Residual=(10)本文采取通用的符号,以表示对某变量y在t时刻的后验估计,而表示对y的先验估计。在某些文献中y又记作y(|t-1),又记作y(t|t)5对于z,而言后验估计没有意义。z,是可观测量,在后验时刻已经有实际观测值了。第9页(共77页)卡尔曼滤波器简介(阎泓著残余反映了预测值和实际值之间的差别。残余为零的话,估计值和实际值完全吻合。如果残余很小,表明估计值很好,反之就不好。卡尔曼滤波器可以利用残余的这一信息改善对x,的估计,给出后验估计。也就是x=x:+k(Residual)=*+k(z,-hR-其中的k称作卡尔曼增益或卡尔曼混合系数( Blending factor)现在剩下的问题就是如何找到k的值,使得估计为最优。为此需要定义先验均方差和后验均方差。121最优的k值先验误差和后验误差分别定义为(12)它们的方差就是先验均方差和后验均方差P≡varP, =vale(13)最优的k值是使后验均方差为最小的值,就是下式成立时的k值(14)ak122计算先验均方差先验均方差为≡war(15)因为(2)式及(8)试式x,=ax_+ bu+we=ax+bu可得e:=x-x=ax+bu +w_)-(ax +bur=a(xx_1)+W因此第10页(共77页)
- 2020-12-03下载
- 积分:1