AFEPack
公有类型 | 公有成员
HTools结构参考

#include <HGeometry.h>

所有成员的列表。

公有类型

enum  { USED = -8, UNUSED = -7, INACTIVE = -9, ACTIVE = USED }

公有成员

template<class GEO >
void setGeometryUnusedRecursively (GEO &geo) const
template<class GEO >
bool isRefined (const GEO &geo) const
template<int DOW>
bool isSemiregular (const HGeometry< 1, DOW > &geo) const
template<int DOW>
bool isSemiregular (const HGeometry< 2, DOW > &geo) const
template<class HGEO >
bool semiregularizeBoundary (HGEO &geo) const
template<int DOW>
bool semiregularizeBoundary (HGeometry< 3, DOW > &geo) const
template<int DOW>
bool isSemiregular (const HGeometry< 3, DOW > &geo) const
template<class GEO >
void setParentInactive (GEO &geo) const
template<class GEO >
bool isGeometryUsed (const GEO &geo) const
template<class GEO >
bool isGeometryActive (const GEO &geo) const
template<class GEO >
bool isGeometryInactive (const GEO &geo) const
template<class GEO >
bool isGeometryIndexed (const GEO &geo) const
template<class GEO >
void setGeometryUsed (GEO &geo) const
template<int DOW>
void setGeometryUsed (HGeometry< 0, DOW > &geo) const
template<int DOW>
void setGeometryUsed (HGeometry< 1, DOW > &geo) const
template<class GEO >
void setGeometryActive (GEO &geo) const
template<class GEO >
void setGeometryUnused (GEO &geo) const
template<int DOW>
void setGeometryUnused (HGeometry< 1, DOW > &geo) const
template<class GEO >
void setGeometryInactive (GEO &geo) const
template<int DOW>
void setGeometryInactive (HGeometry< 1, DOW > &geo) const
template<class GEO >
void clearIndex (GEO &geo) const
template<int DOW>
void clearIndex (HGeometry< 0, DOW > &geo) const
template<int DOW>
void clearIndex (HGeometry< 1, DOW > &geo) const
template<class GEO >
void incrIndex (GEO &geo) const
template<int DOW>
void incrIndex (HGeometry< 0, DOW > &geo) const
template<int DOW>
void incrIndex (HGeometry< 1, DOW > &geo) const
template<class GEO >
void decrIndex (GEO &geo) const
template<int DOW>
void decrIndex (HGeometry< 0, DOW > &geo) const
template<int DOW>
void decrIndex (HGeometry< 1, DOW > &geo) const
template<class HGEO , class VTX >
void regularize_add_node (HGEO &hgeo, GeometryBM &geo, VTX &vtx) const
template<class HGEO >
void regularize_add_side (HGEO &hgeo, GeometryBM &geo) const
template<class HGEO >
void regularize_add_triangle (HGEO &hgeo, GeometryBM &geo) const
template<class HGEO >
void regularize_add_twin_triangle (HGEO &hgeo, GeometryBM &geo, int k) const

详细描述

在进行半正则化准备工作的时候,每个用到了的几何体的 index 都被设为了 USED,没有被用到的则设为 UNUSED。在正则化的过程中,我们始终保持这个 准则,这样就比较方便判断一个单元是否是半正则化的。

在正则化的时候,所有的几何体被标记为 ACTIVE 和 INACTIVE,其中 ACTIVE 和 USED 是一样的。这样在半正则化后就调用正则化,我们只需要将 叶子几何体的父亲的组件都设置成为 INACTIVE 就可以了。


成员枚举类型文档

anonymous enum
枚举值:
USED 
UNUSED 
INACTIVE 
ACTIVE 

成员函数文档

template<class GEO >
void HTools::clearIndex ( GEO geo) const [inline]

下面一组函数是为了销毁一棵几何遗传树。销毁几何遗传树分为三个步骤:

  • 将所有几何体的 index 设为 0;
  • 对所有几何体进行遍历,几何体被遍历到则将 index 增加 1;
  • 对所有几何体进行遍历,如果几何体的 index 为 0,则删除几何体, 否则将几何体的index 减少 1; 将几何体的 index 设为 0.
template<int DOW>
void HTools::clearIndex ( HGeometry< 0, DOW > &  geo) const [inline]
template<int DOW>
void HTools::clearIndex ( HGeometry< 1, DOW > &  geo) const [inline]
template<class GEO >
void HTools::decrIndex ( GEO geo) const [inline]

减少几何体的 index。

template<int DOW>
void HTools::decrIndex ( HGeometry< 0, DOW > &  geo) const [inline]
template<int DOW>
void HTools::decrIndex ( HGeometry< 1, DOW > &  geo) const [inline]
template<class GEO >
void HTools::incrIndex ( GEO geo) const [inline]

增加几何体的 index。

template<int DOW>
void HTools::incrIndex ( HGeometry< 0, DOW > &  geo) const [inline]
template<int DOW>
void HTools::incrIndex ( HGeometry< 1, DOW > &  geo) const [inline]
template<class GEO >
bool HTools::isGeometryActive ( const GEO geo) const [inline]

几何体是否是叶子几何体。

template<class GEO >
bool HTools::isGeometryInactive ( const GEO geo) const [inline]

几何体是否不是叶子几何体。

template<class GEO >
bool HTools::isGeometryIndexed ( const GEO geo) const [inline]

几何体是否已经排过号了。

template<class GEO >
bool HTools::isGeometryUsed ( const GEO geo) const [inline]

下面一组函数通过几何体的 index 判断一个几何体的状态。 几何体是否在网格中被使用。

template<class GEO >
bool HTools::isRefined ( const GEO geo) const [inline]

判断一个几何体是否被细分。

template<int DOW>
bool HTools::isSemiregular ( const HGeometry< 1, DOW > &  geo) const [inline]

判断一个线段是否是半正则。对于线段来说,我们并未定义半正则,这个函 数是为了在高维时候判断使用的。此函数判断准则是:其是否有孩子被细分, 如果有则返回false,否则返回true。使用此函数我们来控制共享同一条边 或者棱的单元的级别差别最大为 1。

template<int DOW>
bool HTools::isSemiregular ( const HGeometry< 2, DOW > &  geo) const [inline]

判断一个三角形是否半正则。半正则需要满足两个条件:

  • 至多有一条边被细分了;
  • 每条边上级别差最多为 1;

这样我们事实上仅仅允许双生三角形的存在。

template<int DOW>
bool HTools::isSemiregular ( const HGeometry< 3, DOW > &  geo) const [inline]

判断一个四面体是否半正则。我们允许的过渡状态仅仅为双生四面体和四生 四面体的情形。其中四生四面体的情形比较复杂,理论上存在有一个四面体 的一个面被细分,但是对面的邻居却没有被细分的情况,过去的程序在此处 事实上是一个bug,现在的判断不会有问题了,并且,现在的判断可以适合 于区域分解并行处理的情况。

有一个面被细分的情形

检查细分的面内部的三个边是不是有还被细分的

template<class HGEO , class VTX >
void HTools::regularize_add_node ( HGEO &  hgeo,
GeometryBM geo,
VTX &  vtx 
) const [inline]

记录点的坐标

template<class HGEO >
void HTools::regularize_add_side ( HGEO &  hgeo,
GeometryBM geo 
) const [inline]
template<class HGEO >
void HTools::regularize_add_triangle ( HGEO &  hgeo,
GeometryBM geo 
) const [inline]
template<class HGEO >
void HTools::regularize_add_twin_triangle ( HGEO &  hgeo,
GeometryBM geo,
int  k 
) const [inline]
template<class HGEO >
bool HTools::semiregularizeBoundary ( HGEO &  geo) const [inline]
template<int DOW>
bool HTools::semiregularizeBoundary ( HGeometry< 3, DOW > &  geo) const [inline]
template<class GEO >
void HTools::setGeometryActive ( GEO geo) const [inline]

USED == ACTIVE

template<class GEO >
void HTools::setGeometryInactive ( GEO geo) const [inline]

设置几何体为非叶子状态。一般情形下会向边界递归,递归到一维时终止。

template<int DOW>
void HTools::setGeometryInactive ( HGeometry< 1, DOW > &  geo) const [inline]
template<class GEO >
void HTools::setGeometryUnused ( GEO geo) const [inline]

设置几何体为未用到状态。一般情形下会向边界递归,递归到一维时终止。

template<int DOW>
void HTools::setGeometryUnused ( HGeometry< 1, DOW > &  geo) const [inline]
template<class GEO >
void HTools::setGeometryUnusedRecursively ( GEO geo) const [inline]

向后代递归设置几何体为未用到状态。

template<class GEO >
void HTools::setGeometryUsed ( GEO geo) const [inline]

下面一组函数设置几何体的状态标识。 设置几何体为用到状态 USED。

template<int DOW>
void HTools::setGeometryUsed ( HGeometry< 0, DOW > &  geo) const [inline]
template<int DOW>
void HTools::setGeometryUsed ( HGeometry< 1, DOW > &  geo) const [inline]
template<class GEO >
void HTools::setParentInactive ( GEO geo) const [inline]

设置一个几何体的父亲为 INACTIVE 状态。


该结构的文档由以下文件生成: