UDF学习(三)数据访问宏

数据访问宏一

网格节点相关宏**
NODE_X (v) 节点v的x方向的坐标 (Node *v)
NODE_Y (v) 节点v的y方向的坐标 (Node *v)
NODE_Z (v) 节点v的z方向的坐标 (Node *v)
F_NODE (f,t,n) 获取节点 (face_t f, Thread *t, int n 节点索引号)
F_NNODES(f,t) 获取面上的节点数量 (face_t f, Thread *t)

网格面相关宏(压力基求解器
F_CENTROID(x, f, t)获取网格面中心坐标; 注释:(real x[ND_ND],face_t f, Thread *t)
F_AREA(A,f,t)获取网格面的法向量 (real A[ND_ND]或NV_VEC(A),)其中A[0]为x方向投影面积、A[1]…、A[2]…、face_t f, Thread *t)
面物理量获取宏
F_U(f, t) u方向速度 (face_t f, Thread *t)
F_V(f, t) v方向速度 (face_t f, Thread *t)
F_W(f, t) w方向速度 (face_t f, Thread *t)
F_T(f, t) 获取面上的温度 (face_t f, Thread *t)
F_H(f, t) 获取面上的焓值 (face_t f, Thread *t)
F_K(f, t) 获取面上的湍动能 (face_t f, Thread *t)
F_D(f, t) 获取面上的湍流耗散率 (face_t f, Thread *t)
F_YI(f, t, i) 获取面上的组分质量分数 (face_t f, Thread *t)//i是组分的编号,组分中的物质编号:0,1,2
F_P(f, t) 获取面上的压力 (face_t f, Thread *t)
F_Flux(f, t) 获取通过面的质量流量 (face_t f, Thread *t)

单元数据访问宏
C_CENTROID(x,c,t) 获取网格单元中心 (real x[ND_ND],cell_t c,Thread *t)
C_VOLUME(_2D)(c,t) 获取网格单元体积 (cell_t c, Thread *t)//这是2D的案例,如果是三维的话,就把括号的2D删除!
C_NNODES(c,t) 获取网格单元节点数量 (cell_t c, Thread *t)
C_NFACES(c,t) 获取网格单元网格面数量 (cell_t c, Thread *t)

单元物理量获取宏
C_R(c, t) 获取网格单元密度 (cell_t c, Thread *t)
C_P(c, t) 获取网格单元压力 (cell_t c, Thread *t)
C_U(c, t) 获取网格单元 u方向速度 (cell_t c, Thread *t)
C_V(c, t) 获取网格单元v方向速度 (cell_t c, Thread *t)
C_W(c, t) 获取网格单元 w方向速度 (cell_t c, Thread *t)
C_T(c, t) 获取网格单元的温度 (cell_t c, Thread *t)
C_H(c, t) 获取网格单元的焓值 (cell_t c, Thread *t)
C_K(c, t) 获取网格单元的湍动能 (cell_t c, Thread *t)
C_NUT(c, t) 获取网格单元的湍流粘度 (cell_t c, Thread *t)
C_D(c, t) 获取网格单元的湍流耗散率 (cell_t c, Thread *t)
C_YI(c, t, i) 获取网格单元的组分质量分数 (cell_t c, Thread *t)//i是组分的编号,组分中的物质编号:0,1,2

单元物理量梯度获取宏
C_P_G(c, t) 获取网格单元压力梯度 (cell_t c, Thread *t)
C_U_G(c, t) 获取网格单元 u方向速度梯度 (cell_t c, Thread *t)
C_V_G(c, t) 获取网格单元v方向速度梯度 (cell_t c, Thread *t)
C_W_G(c, t) 获取网格单元 w方向速度梯度 (cell_t c, Thread *t)
C_T_G(c, t) 获取网格单元的温度梯度 (cell_t c, Thread *t)
C_H_G(c, t) 获取网格单元的焓值梯度 (cell_t c, Thread *t)
C_K_G(c, t) 获取网格单元的湍动能梯度 (cell_t c, Thread *t)
C_NUT_G(c, t) 获取网格单元的湍流粘度梯度 (cell_t c, Thread *t)
C_D_G(c, t) 获取网格单元的湍流耗散率梯度 (cell_t c, Thread *t)
C_YI_G(c, t, i) 获取网格单元的组分质量分数梯度 (cell_t c, Thread *t)//i是组分的编号,组分中的物质编号:0,1,2

注意:
UDF中能够利用宏C_T_G访问单元温度,却不能用C_U_G访问x方向速度梯度。
主要原因在于求解器为了计算效率,在求解时从内存中除了不被使用的数据。如果一定要保留这些梯度数据,可以使用TUI明亮solve/set/expert,之后再系统提示Keep temporary solve emory from being freed?后输入yes,这样的话所有的梯度数据都会被保留,但是计算过程中会消耗更多的内存。
C_P_G只能用于压力基求解器。
C_YI_G只能用于密度基求解器,若要在压力基中使用此宏,则需要设置species/save-gradient? 为#t。

数据访问宏二

相邻网格索引宏:
在这里插入图片描述
C0=F_C0(f,t) C1=F_C1(f,t)
T0=THREAD_T0(t) T1=THREAD_T1(t)
注:比较重要
边界面判断宏
BOUNDARY_FACE_THREAD(t)
begin_f_loop(f,t)
{
if(BOUNDARY_FACE_THREAD(t) )
{

}

                         }edn_f_loop(f,t)

获取域指针宏
Get Domain (id)
Domian *d=Get_Domain(id)
注:对于单向流,id值为1;对于多相流,混合相的id值为1,其余每一相id值可以在Phase面板中查看。
设置边界值
F_PROFILE(f,t,i)
DEFINE_PROFILE(name,t,i)
{

begin_f_loop(f,t)
{

F_PROFILE(f,t,i)=…

                         }end_f_loop(f,t)}

获取shadow面的thread宏
THREAD_SHADOW(t)
ND操作宏
ND_ND
向量运算宏
NV_MAG(x)=sqrt(x[0]*x[0]+x[1]*x[1]+x[2]*x[2])
NV_MAG2(x)=x[0]*x[0]+x[1]*x[1]+x[2]*x[2]///模的平方;
时间相关宏
CURRENT_TIME (或者RP_Get Real(“flow time”)) 当前流动时间
CURRENT_TIMENSTEP (RP_Get_Real(“physical-time-setp”)) 当前时间步长
PREVIOUS_TIME 上个时间步的流动时间
PREVIOUS_2_TIME 上两个时间步的流动时间
PREVIOUS_TIMESTEP 上一个时间步长
N_TIME (或者RP_Get_Real(“time-step”)) 时间步数
N_ITER 迭代步数
其他宏:
Data_Valid_P//
FLUID_THRED_P//判断是否是个流体域,比较少见
M_PI//这就是π,
N_UDM//UDM个数
N_UDS//UDS个数
SQR(k)//k的平方
UNIVERSAL_GAS_CONSTANT//
Lookup_thread(d,id)//比较重要,通过指针和ID值,可以对应的类型指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/434822.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivado 放置I/O端口

放置I/O端口 I/O规划视图布局提供了几种将I/O端口分配给封装引脚的方法。你可以在“I/O端口”窗口中选择单个I/O端口、I/O端口组或接口,然后分配将它们封装到封装窗口中的封装引脚或设备窗口中的I/O焊盘。在“程序包”窗口中,您可以: •将端…

基于springboot+vue的明星周边产品销售网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

算子:详细篇

目录 一、执行环境 1.1 创建执行环境 1.2 执行模式 二、源算子 2.1 从集合中读取数据 2.2 从文件读取数据 2.3 从socket读取数据 2.4 从kafka读取数据 三、转换算子 3.1 基本转换算子 (1)映射(map) (2)过滤(filter) &#xff08…

用友U8接口-系统管理(3)

教程目录 部署和简要说明(1) 获取token&数据字段(2) 概括 本文的操作需要正确部署U8HttpApi对本套接口系统管理目录说明 系统管理 获取token 参考获取token 根据sql进行查询 此POST方式接口运行调用者传入SQL语句,或者将SQL语句写到xml文件中&#xff0…

软件测试20个基础面试题及答案

什么是软件测试? 答案:软件测试是指在预定的环境中运行程序,为了发现软件存在的错误、缺陷以及其他不符合要求的行为的过程。 软件测试的目的是什么? 答案:软件测试的主要目的是保证软件的质量,并尽可能…

mysql INSERT数据覆盖现有元素(若存在)

INSERT...ON DUPLICATE KEY UPDATE的使用 如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则会更新ON DUPLICATE KEY UPDATE关键字后面的字段值。 例如,如果列a被定义为UNIQUE&#xff0…

OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程

文章目录 1.OSI七层模型2.TCP/IP五层(或四层)模型3.网络通信的宏观流程3.1.同网段通信3.2.跨网段通信 1.OSI七层模型 在计算机通信诞生之初,不同的厂商都生产自己的设备,都有自己的网络通讯标准,导致了不同厂家之间各种协议不兼容&#xff0…

AI数字人-数字人视频创作数字人直播效果媲美真人

在科技的不断革新下,数字人技术正日益融入到人们的生活中。近年来,随着AI技术的进一步发展,数字人视频创作领域出现了一种新的创新方式——AI数字人。数字人视频通过AI算法生成虚拟主播,其外貌、动作、语音等方面可与真实人类媲美…

v43-47.problems

1.for循环 一般地,三步走: for(初始化;表达式判断;递增/递减) { ....... } 但是,如果说声明了全局变量,那么第一步初始化阶段可以省略但是要写分号‘ ; ’…

串口WiFi模块简介、工作原理、工作方式等8大知识点

WiFi模块又名串口WiFi模块,属于物联网传输层,功能是将串口或TTL电平转为符合WiFi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。串口WIFI模块,体积小,功耗低,采用…

HPE ProLiant MicroServer Gen8更新固件

前几天因为没有shutdown OMV NAS便关了电源,导致其中一个硬盘损坏(用DG检查有9个坏区),从而整个硬盘数据都没法读取,于是想着装个windows server会不会更好点,至少对windows熟悉点,硬盘扫描恢复…

python-分享篇-语音版东北方言小词典

文章目录 准备代码效果 准备 一、本实例需要安装pywin32模块,使用pip安装pywin32模块代码如下: pip install win32com 二、根目录下准备一txt:写出对应的东北方言和普通话。 代码 import winsound import win32com from win32com.client …