fluent中的数据结构
fluent中的数据结构
1注:本文翻译自UDF手册,详细信息可参阅UDF手册。除了标准的C语言数据类型(如real、int等)可用于在UDF中定义数据之外,还有与求解器数据相关的ANSYS特定于fluent的数据类型。这些数据类型表示网格的计算单元。使用这些数据类型定义的变量通常作为参数来定义宏,以及访问ANSYS FLUENT求解器数据的其他特殊函数。一些比较常用的ANSYS FLUENT数据类型有:Node存储与网格点相关的数据的结构数据类型。face_t一种整数数据类型,用于在face thread中标识特定的face。cell_t一种整数数据类型,标识cell thread中特定的单元。Thread一种结构数据类型,用于存储它所代表的单元格组或面所共有的数据。对于多相流应用程序,每个相和混合相都有一个thread结构。Domain在网格中存储与节点、面和单元线程集合相关的数据的结构数据类型。对于单相流,只有一个域结构。对于多相流,每个相、相之间的相互作用以及混合相都有域结构。混合级域是多相模型的最高级结构。当你在ANSYS FLUENT中使用UDF时,你的函数可以访问流体和边界区域中单个单元或单元面的解的变量。需要向udf传递适当的参数,例如线程引用(即指向特定线程的指针)和单元格或面ID,以便能够访问各个单元格或面。请注意,face ID或cell ID本身并不能惟一地标识face或cell。线程指针总是与ID一起需要,以标识面(或单元格)所属的线程。有些udf将单元格索引变量(c)作为参数传递(如DEFINE_PROPERTY(my_function,c,t)),或者face索引变量(f)作为参数传递(如DEFINE_UDS_FLUX(my_function,f,t,i))。如果单元格或face索引变量(例如,cell_t c、face_t f)不是作为参数传递的,而是需要在UDF中传递,那么该变量在本地声明之后总是可以被函数使用。传递给你的UDF(作为指针)的数据结构取决于您使用的定义宏和你试图修改的属性或术语。例如,DEFINE_ADJUST udf是传递域指针(d)的通用函数(如DEFINE_ADJUST(my_function, d))。DEFINE_PROFILE udf被传递一个线程指针(t)到函
数所连接的边界区域,例如DEFINE_PROFILE(my_function, thread, i)。一些UDF(比如DEFINE_ON_DEMAND函数)没有传递任何指向数据结构的指针,而另一些UDF没有传递UDF需要的指针。如果你的UDF需要访问一个线程或域指针,而该线程或域指针不是由求解程序通过参数直接传递的,那么你需要使用一个特殊的ANSYS fluent提供的宏来获得UDF中的指针。例如,DEFINE_ADJUST只传递域指针,所以如果你的UDF需要一个线程指针,那么它必须在本地声明该变量,然后使用特殊的宏Look up_Thread获取它。一个例外是,如果你的UDF需要一个线程指针来循环一个域中的所有单元线程或所有面线程(分别使用thread_c_loop(c,t)或thread_f_loop(f,t)),并且它没有传递给DEFINE宏。由于UDF将遍历域内的所有线程,因此不需要使用Lookup_ Thread获取线程指针,将其传递给循环宏;在调用循环之前,你只需要在本地声明线程指针(以及单元格或面ID)。作为另一个例子,如果你使用DEFINE_ON_DEMAND(它不传递任何指针参数)来执行异步UDF,并且你的UDF需要域指针,那么该函数将需要在本地声明域变量,并使用Get_Domain获取它。
因篇幅问题不能全部显示,请点此查看更多更全内容