获取内部面几何拓扑结构(调用INTERIOR_FACE_GEOMETRY)的例子
如下图所示,等边三角形的网格单元为c0, 蓝色的网格单元为c1。两者的中心分别为和。网格单元c0和c1共享一个面f,如下的二维图中即为线段ab。INTERIOR_FACE_GEOMETRY宏就是用来获取关键的网格单元之间连接几何拓扑信息的。要调用该宏,首先必须加入头文件“sg.h”。
INTERIOR_FACE_GEOMETRY宏的参数定义如下:
以下是一个例子,用来获取网格c0到c1的矢量(采用VC++ UDF Studio插件编译通过(https://vcudfstudio.github.io))
#include "udf.h" extern "C" { #include "sg.h" //必须的头文件 }; DEFINE_ON_DEMAND(test) { Thread*tf; Domain*domain = Get_Domain(1); thread_loop_f (tf,domain) { if (!BOUNDARY_FACE_THREAD_P(tf)) //如果不是边界面的线索,因为边界面无法调用INTERIOR_FACE_GEOMETRY宏 { face_t f; real ds,A_by_es; real A[ND_ND],es[ND_ND],dr0[ND_ND],dr1[ND_ND],NV_VEC(vector_c0_c1); begin_f_loop(f,tf) //对面进行循环 { if(PRINCIPAL_FACE_P(f,tf)) //避免并行版本中出现重复统计的面 { INTERIOR_FACE_GEOMETRY(f,tf,A,ds,es,A_by_es,dr0,dr1);
NV_VS(vector_c0_c1,=, es, *, ds); //现在vector_c0_c1中包含了从 网格c0到c1的矢量 } } end_f_loop(f,tf); } } }