获取内部面几何拓扑结构(调用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); } } }

 

posted @ 2022-03-05 15:40  SuperUDF  阅读(135)  评论(0编辑  收藏  举报