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
六轴机械臂正解(FK)和逆解(IK)算法
整理出了如下几个计算六轴机械臂正解和逆解的关键点:01_机器人坐标系和关节的说明02_算法坐标系的建立03_D-H参数表的建立04_FK(正解)算法05_Matlab辅助计算FK(正解)06_IK(逆解)算法07_Matlab辅助计算IK(逆解)文档中针对FK以及IK算法的推导均有详细的推导过程。希望各位能根据推导过程写出自己的代码。图1针对机器人的关节坐标系,我们还需要规定各个关节的转动方向,如下图所示,我们依次描叙了各个关节的正负方向。在关节坐标系下,机器人各个关节的转动方向,必须和下图相符图22.机器人直角坐标系目前所说的直角坐标系是机器人的工具坐标系,如下图所示,因为该机器人没有安装执行末端,所以,工具坐标系原点在第六轴末端法兰中心处,红色箭头是Ⅹ轴,蓝色箭头是乙轴,根据右手定则确定Y轴方向@图3基坐标系所在的位置是定义机器人基座的位置,如上图所示,坐标系原点在第一关节的中心处,红色箭头所示为Ⅹ轴,蓝色箭头所示为乙轴,根据右手定则,即可确定Y轴的方向。具体如上图旁边那个坐标系所示。当我们说六轴机械臂位姿时,说的是六轴机械臂末端的位姿,该位姿包括六个参数,分别为Ⅹ YZABC。六轴机械臂未端的位姿是以基坐标系作为参考坐标系的:笛卡尔坐标系的Ⅹ轴,Ⅹ轴距离Y:笛卡尔坐标系的Y轴,Y轴距离Z:笛卡尔坐标系的Z轴,z轴距离A:XY-Z固定角坐标系下的偏转角B:X-Y-Z固定角坐标系下的俯仰角C:XY-Z固定角坐标系下的回转角ZA2呈Ax图如上图所示,A对应第一个坐标系中的γ,B对应第二个坐标系中的β,C对应第三个坐标系中的Q。为什么我们需要花费专门的一节来讲解六轴机器人的坐标系和关节?因为我们后续要学习的FK和就是以这个为基础的。FK是已知六轴机械臂在关节坐标系下各个关节转动的角度,然后求解直角坐标系下的Ⅹ YZABOK是已知六轴杋械臂在直角坐标系下的 XYZABO,然后求解关节坐标系下各个关节转动的角度二.算法坐标系的建立为了得出D-H参数表,我们首先需要针对六轴机器人的各个关节建立坐标系,在固定的坐标系下,才能最终得出连杆之间的变换关系,从而建立D-H参数表。82个2算法坐标系确定的通用方法如下1)坐标系的Z轴,与各个关节的旋转中心轴线重合2)坐标系的X轴,与沿着相邻两个z轴的公垂线重合3〕坐标系的Y轴,可以通过右手定则来确定当相邻两个z轴相交时,确定坐标系的方法如下1)坐标系的Y轴,沿着第一个Z轴与下一个z轴相交的延长线为Y轴2)坐标系的Ⅹ轴,通过右手定则确定当相邻两个Z轴平行时,确定坐标系的方法如下1)坐标系Ⅹ轴,相邻两个乙轴平行,做两个乙轴的公垂线,相交于下一个z轴为Ⅹ轴,方向为第一个Z轴到下一个Z轴的方向2)坐标系Y轴,通过右手定则确定三.D-H参数表的建立D-H参数表,实际上是相邻各个关节坐标的变换关系表,根据之前针对各个关节所建立的丛标系,按照如下四条变换规则,即可得到D-H参数表。变换规则1)绕Z轴,旋转9n+1n与Xn+1平行(方向一致))沿Zn轴,平移与Xn+1共线3)沿Xn轴,平移aAn与Xn+1原点重4)将Zn绕Xn+1轴,旋转αn+1Zn与Zn+1共线建立D-H参数表的详细步骤第一步,从第一关节到第二关节之间的变换绕z轴,旋转0度,让X0与X1平行且方向一致沿z轴,平移242,让Ⅺ0与X1共线沿Ⅺ轴,平移0,Ⅺ与X1原点重合将石绕X1轴,旋转90度,Z0与z1共线第二步,从第二关节到第三关节之前的交化绕z1轴,旋转90度,让X1与X2平行且方向一致沿Z1轴,平移0,让X1与X2共线沿X1轴,平移225,X1与X2原点重合将Z1绕X2轴,旋转0度,Z1与Z2共线第三步:从第三关节到第四关节之间的交换绕z2轴,旋转0度,让X2与X3平行且方向一致沿Z2轴,平移0,让Ⅹ2与X3共线沿X2轴,平移0,X2与X3原点重合将Z2绕X3轴,旋转90度,Z2与z3共线第四步:从第四关节到第五关节之间的变换绕z3轴,旋转0度让X3与X4平行且方向一致沿3轴,平移22886,让X3与X4共线沿3轴,平移0,X3与X4原点重合将Z3绕X1轴,旋转90度,Z3与Z1共线第五步:从第五关节到第六关节之间的变换绕Z4轴,旋转90度,让X4与X5平行且方向一致沿Z4轴,平移0,让X4与X共线沿X轴,平移0,X1与K5原点重合将Z4绕X5轴,旋转90度,Z4与z共线第六步:从第六关节到未端之间的变换绕z轴,旋转0度,让X5与X6平行且方向一致沿z轴,平移-50,让X5与X6共线沿X轴,平移0,X5与K6原点重合将z绕X轴,旋转0度,Z5与z6共线根据上图所示机械臂的尺寸参数以及以上六个步骤的变换,D-H参数表如下所示420901-202253-4228.864-5900900-500四.正解(FK)算法根据连杆变换规贝T=R(Z, B1*T(Z, di)*T(X, ai)*R(X, ai)6;00因为R(Z06:00100000aT(Z,a1)=00001000011000T(xa10100001d0001000 caROX. a)= osa oa;0001根据以上矩阵变换,可以得到如下连杆变换的通用矩阵如下Bi -se, ca s0,sa, a,c61s0 ce:cad sa asa0 saca d00根据以上连杆变换的通用矩阵和之前的D-H参数表,可以得到如下δ个连杆变换矩阵e10s61^0S0 0T6100102420001s20-22S620225c62000001620s60b203001000040s日4000c0 0010228.860001s50c650C650s650000006-s6006000C001-40FK算法需要解决的问题是:已知各个关节的转动角度,需要求出末端的位姿。已知:(61,2,θ3,θ4,θs,θ6求解:(X,Y,乙,A,B,C)计算公式如下所示13机器末端的位姿矩阵为72272313273300011722723py07*1T2T*37*4T5Tp000在以上的推导过程中,、T、2、37、4、7分别为相对于01、02、63、64、6s、的已知量。由此可以求解出位置变量(pPP)以及姿态变量a1T2723五. Matlab辅助计算正解(FK)根据上一章,我们有如下结论10s10100102420001s2-c620-225s6CS20225C60010
- 2020-12-05下载
- 积分:1