fluent_UDF学习笔记

UDF源代码路径

D:\Program Files\ANSYS Inc\v231\fluent\fluent23.1.0\src

关于颗粒反弹速度的计算

 /* 通过面法向单位向量计算速度的法向向量、切向向量,再通过法向、切向恢复系数重新计算反弹速度*//* Compute normal velocity.将颗粒速度向面法线方向投影,即计算颗粒速度与法线向量的点乘:V(V1,V2)·n(n1,n2)=V1n1+V2n2 */for(i=0; i<idim; i++)vn += TP_VEL(tp)[i]*normal[i];/* Subtract off normal velocity. 新的颗粒速度为切向速度,及原颗粒速度减去法向速度*/for(i=0; i<idim; i++)TP_VEL(tp)[i] -= vn*normal[i];/* Apply tangential coefficient of restitution. 使用切向恢复系数计算反弹后的切向速度*/for(i=0; i<idim; i++)TP_VEL(tp)[i] *= tan_coeff;/* Add reflected normal velocity.使用法向系数计算反弹后的法向速度,再计算合速度,反弹法向速度为法线反方向,即-n(n1,n2) */for(i=0; i<idim; i++)TP_VEL(tp)[i] -= nor_coeff*vn*normal[i];/* Store new velocity in TP_VEL0 of particle */for(i=0; i<idim; i++)TP_VEL0(tp)[i] = TP_VEL(tp)[i]

在这里插入图片描述
在这里插入图片描述

关于颗粒追踪类型 gtpv_t gvtp;

typedef struct global_tracked_particle_vars_struct
{#if RP_DPM_CACHE/* avoids having to pass additional arguments to AddSources();* later should add extra function args to make clean */dpm_source_cache_t *source_cache;int source_cache_size;int source_cache_count;film_prop_cache_t *film_prop_cache;int film_prop_cache_size;int film_prop_cache_count;dpm_real_cache_t *real_cache;int real_cache_size;int real_cache_count;dpm_workpile_t *workpile;int workpile_size;int workpile_count;int next_particle;float *random_cache;         /* store precomputed random numbers */int random_cache_size;int next_random;float next_gauss_random;     /* save second random generated by gauss_random() */
#endif /* RP_DPM_CACHE *//** Current cell type and number of faces in current cell.  Don't use* cxfaces_per_cell[ctype] for number of faces as hanging nodes may* add additional faces.*/int path_ctype, path_n_faces, path_incl_test;int path_n_nodes;               /* number of nodes in current cell */int path_face_num;/* all of the following global data pertains to the cell in which the current* particle is currently located. Should be updated whenever we start a new* particle or the particle enters a new cell.*/real prevVel[3];                  /* velocity of particle in prev step. */double (*faceEq)[5];              /* faceEq[6*MAX_CELL_NODES][5];  MAX is 6*MAX_CELL_NODES -- polyhedral cell with hanging nodes.* last element holds magnitude of cross product of edges, e.g., for intersections */double (*faceEqV)[5];             /* face equation velocity - for face equations moving in time */
#if RP_3Ddouble (*faceEqA)[4];             /* face equation acceleration - for face equations moving in time */
#endifdouble (*facePts)[3][3];          /* facePts[6*MAX_CELL_NODES][3][3]; */double (*facePtV)[3][3];          /* facePtV[6*MAX_CELL_NODES][3][3]; */int *validEq;                     /* validEq[6*MAX_CELL_NODES];    */cxboolean validMovingEquations;   /* safeguard missuse of uninitialized variables */int *numFacePts;                  /* numFacePts[6*MAX_CELL_NODES]; */int *faceIndx;                    /* faceIndx[6*MAX_CELL_NODES];   */real zoneEq[3];int zoneEqSet;int numCellVisited;/* equations for perpendicular planes at each edge on the wall film face (max of 4 edges of physical face, not cortex face) */int  *edge_valid;                 /* edge_valid[MAX_FACE_NODES]; */double (*edgeEq)[4];              /* edgeEq[MAX_FACE_NODES][4]; */double (*edgeEqV)[5];             /* for edge equations moving in time */
#if RP_3Ddouble (*edgeEqA)[4];             /* for edge equations moving in time */
#endifdouble (*edgePts)[2][3];          /* for edges moving in time */double (*edgePtV)[2][3];          /* for edges moving in time *//* interpolation factors for function values at the current location of the particle. updated every step. */float *intFact;                 /* intFact[MAX_CELL_NODES]; */int n_tracked;int n_escaped;int n_aborted;int n_trapped;//被捕捉颗粒数,无论是aborted or stoppedint n_stripped;int n_separated;int n_filmrelease;
#if RP_3D && RP_WALL_FILMint n_absorbed;
#endifint n_transformed;int n_inserted;int n_evaporated;int n_incomplete;int n_incomplete_parallel;int n_coalesced;int n_collided;int n_splashed;int n_shed;int n_stick;int n_rebound;int n_spread;
#if RP_DPM_CACHEint n_source_cache_deposits;int n_cell_updates;int n_workpile_updates;
#endif /* RP_DPM_CACHE */int n_migrant;int n_tracked_migrants;double dpm_time;float fldmax[3], fldmin[3];        /* also part of c_par */struct particle_struct *p_spawned; /* list to carry spawned particles */struct particle_struct *p_impinging; /* list for impinging particles *//* subtet tracking */struct subtet_tracking_location_struct *subtet;int mc_convergence_failure;  /* to report when the RK solver does not converge for multicomponent particles */} gtpv_t; /* type for global tracked particle vars */

关于颗粒PATH类型 ;

typedef enum
{
PATH_END,//escape
PATH_FINAL_STEP,
PATH_ACTIVE,//继续追踪,track
PATH_BREAK,//
PATH_ABORT,//终止,不再追踪
PATH_STOP,//停止,继续追踪
PATH_NON_LOCAL_PERIODIC,
PATH_NON_LOCAL_OVERSET,
PATH_NON_LOCAL_GTI,
PATH_NON_LOCAL,
PATH_REINJECT,
PATH_MAX_STATUS
} Path_Status;

PATH_STOP

在这里插入图片描述
=**

表示颗粒停止移动,颗粒静止在壁面上,不过颗粒轨迹仍参与计算,应该能用做颗粒的沉积再剥离

PATH_ABORT与n_aborted对应

在这里插入图片描述
在这里插入图片描述

颗粒中止计算,从后续计算中移除,不再存在于计算域中,减少计算负担,方便后处理

PATH_END:与n_escaped对应

在这里插入图片描述
在这里插入图片描述

一般用于计算域的出入口,对于一些壁面也能用作颗粒壁面边界条件的简化处理。

PATH__BREAK

颗粒PATH类型之PATH


在这里插入图片描述

颗粒在边界面不断破碎,意味着颗粒轨迹计算不会终止,陷入死循环

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

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

相关文章

Go 语言标准库中sort模块详细功能介绍与示例

Go语言的 sort 模块提供了对切片和自定义数据结构的排序功能&#xff0c;支持基本类型排序、自定义排序规则、稳定排序和二分查找。以下是 sort 模块的核心方法及示例说明&#xff1a; 1. 基本类型排序 sort.Ints、sort.Float64s、sort.Strings 直接对基本类型的切片进行排序…

第十六届蓝桥杯模拟二(串口通信)

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…

06-ADC

ADC简介 Analog-Digital Converter 模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁。 12位逐次逼近型ADC&#xff0c;1us转换时间&#xff1b;输入电压范围&#xff1a;0-3.3V&#xff0c;转换结果…

二层综合实验

拓扑图 实验要求 1.内网IP地址使用172.16.6.0/16分配 2.sw1和sW2之间互为备份 3.VRRP/STP/VLAN/Eth-trunk均使用 4.所有Pc均通过DHCP获取IP地址 5.ISP只能配置IP地址 6.所有电脑可以正常访问IsP路由器环回 实验思路 这是一个二层综合实验每当拿到一个实验看清楚要求之后都有…

Java实现pdf中动态插入图片

今天接到一个需求&#xff0c;需要在pdf中的签名处&#xff0c;插入签名照片&#xff0c;但签名位置不固定&#xff0c;话不多说上代码&#xff1a; 1、首先引入itextpdf依赖包&#xff1a; <dependency><groupId>com.itextpdf</groupId><artifactId>…

OpenCV 图形API(2)为什么需要图形API?

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 G-API背后的动机 G-API模块为OpenCV带来了基于图的执行模型。本章简要描述了这种新模型如何在两个方面帮助软件开发者&#xff1a;优化和移植图像处理算法…

基于Spring AI开发本地Jenkins MCP Server服务

前言 首先介绍下MCP是什么&#xff1f; MCP是由开发了 Claude 模型的 Anthropic 公司2024年12月提出并开源的一项开放标准&#xff0c;全称&#xff1a;Model Context Protocol&#xff0c;它是一个开放协议&#xff0c;它使 LLM 应用与外部数据源和工具之间的无缝集成成为可能…

vcpkg安装指定版本的库

一.vcpkg安装 使用git将vcpkg源码克隆到本地制定目录&#xff08;D:\vcpkg&#xff09;&#xff0c;并初始化 git clone https://github.com/microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh # Linux/macOS .\bootstrap-vcpkg.bat # Windows 如下图&#xff1a; 二.安…

数据结构C语言练习(单双链表)

本篇练习题(单链表)&#xff1a; 1.力扣 203. 移除链表元素 2.力扣 206. 反转链表 3.力扣 876. 链表的中间结点 4.力扣 21. 合并两个有序链表 5. 牛客 链表分割算法详解 6.牛客 链表回文结构判断 7. 力扣 160. 相交链表 8. 力扣 141 环形链表 9. 力扣 142 环形链表 II…

nginx部署前端项目(linux、docker)

引言 在CentOS 7系统上使用docker安装nginx&#xff0c;使用nginx部署一个由Vue开发、打包的项目 docker安装nginx 这里不多赘述&#xff0c;直接上docker-compose.yml代码 nginx:container_name: nginximage: nginx:1.27.2ports:- "80:80"volumes:- /docker/ngin…

WPF ContentPresenter详解2

ContentPresenter与ContentControl的区别 ContentControl 和 ContentPresenter 是 WPF 中两个相关的控件&#xff0c;但它们在用途和功能上有一些关键的区别。理解这两者的区别和联系有助于更好地设计和开发用户界面。 1. 类层次结构 ContentControl&#xff1a;位于 WPF 控件…

【HTML5游戏开发教程】零基础入门合成大西瓜游戏实战 | JS物理引擎+Canvas动画+完整源码详解

《从咖啡杯到财务自由&#xff1a;一个程序员的合成之旅——当代码遇上物理引擎的匠心之作》 &#x1f31f; 这是小游戏开发系列的第四篇送福利文章&#xff0c;感谢一路以来支持和关注这个项目的每一位朋友&#xff01; &#x1f4a1; 文章力求严谨&#xff0c;但难免有疏漏之…

鸿蒙OS 5.0 服务能力框架深入剖析

鸿蒙OS 5.0 服务能力框架中关键类的作用分析 1\. 鸿蒙OS 5.0 服务能力框架导论 鸿蒙OS 5.0&#xff0c;亦称鸿蒙智联 5 1&#xff0c;标志着华为在分布式操作系统领域迈出的重要一步。与早期版本采用兼容安卓的AOSP层、Linux内核以及LiteOS内核不同&#xff0c;鸿蒙OS 5.0 专注…

RTMP推流+EasyDSS云服务+边缘AI分析的无人机监控系统设计

在现代科技不断发展的背景下&#xff0c;无人机技术已经广泛应用于各个领域&#xff0c;从航拍摄影到工业巡检&#xff0c;从农业监测到应急救援&#xff0c;无人机以其高效的工作能力&#xff0c;为人们的生活和工作带来了诸多便利与创新&#xff0c;而其视频传输与分析系统更…

HCIP(VLAN综合实验)

实验拓补图 实验分析 一、实验目的 掌握VLAN的创建和配置方法理解VLAN在局域网中的作用学习如何通过VLAN实现网络隔离和通信 二、实验环境 交换机&#xff08;SW1、SW2、SW3&#xff09;个人电脑&#xff08;PC1、PC2、PC3、PC4、PC5、PC6&#xff09;路由器&#xff08;R1…

Linux系统编程 | 线程的基本概念

&#x1f493;个人主页&#xff1a;mooridy &#x1f493;专栏地址&#xff1a;Linux 关注我&#x1f339;&#xff0c;和我一起学习更多计算机的知识! &#x1f51d;&#x1f51d;&#x1f51d; 什么是线程 程序中的一个执行路线就叫做线程 一个进程至少要有一个执行线程,单…

小林coding-12道Spring面试题

1.说一下你对 Spring 的理解?spring的核心思想说说你的理解&#xff1f; 2.Spring IoC和AOP 介绍一下?Spring的aop介绍一下?IOC和AOP是通过什么机制来实现的?怎么理解SpringIoc&#xff1f;依赖倒置&#xff0c;依赖注入&#xff0c;控制反转分别是什么&#xff1f;依赖注…

第十二章——位运算

按位的与& 若x的第i位和y的第i位都是1&#xff0c;那么&#xff08;x&y&#xff09;1&#xff0c;否则&#xff08;x&y&#xff09; 0 应用&#xff1a;希望让某一位或某些位为0 。取一个数中的一段。 按位的或| 若x的第i位1或y的第i位1&#xff0c;那么&…

计算机等级考试数据库三级(笔记3)

插入 修改 现要创建一个具有如下功能的触发器&#xff1a;每当在销售表中插入一条销售记录时&#xff0c;修改商品表中对应商品的销售总量&#xff0c;假设一次只插入一条销售记录。请补全下列代码。CREATE TRIGGER tri insert on xx FOR xx AS xx 商品表 xx 销售总量xx (SELEC…

【Leetcode 每日一题】2716. 最小化字符串长度

问题背景 给你一个下标从 0 0 0 开始的字符串 s s s&#xff0c;重复执行下述操作 任意 次&#xff1a; 在字符串中选出一个下标 i i i&#xff0c;并使 c c c 为字符串下标 i i i 处的字符。并在 i i i 左侧&#xff08;如果有&#xff09;和 右侧&#xff08;如果有&…