AFEPack
|
#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 就可以了。
void HTools::clearIndex | ( | GEO & | geo | ) | const [inline] |
下面一组函数是为了销毁一棵几何遗传树。销毁几何遗传树分为三个步骤:
void HTools::clearIndex | ( | HGeometry< 0, DOW > & | geo | ) | const [inline] |
void HTools::clearIndex | ( | HGeometry< 1, DOW > & | geo | ) | const [inline] |
void HTools::decrIndex | ( | GEO & | geo | ) | const [inline] |
减少几何体的 index。
void HTools::decrIndex | ( | HGeometry< 0, DOW > & | geo | ) | const [inline] |
void HTools::decrIndex | ( | HGeometry< 1, DOW > & | geo | ) | const [inline] |
void HTools::incrIndex | ( | GEO & | geo | ) | const [inline] |
增加几何体的 index。
void HTools::incrIndex | ( | HGeometry< 0, DOW > & | geo | ) | const [inline] |
void HTools::incrIndex | ( | HGeometry< 1, DOW > & | geo | ) | const [inline] |
bool HTools::isGeometryActive | ( | const GEO & | geo | ) | const [inline] |
几何体是否是叶子几何体。
bool HTools::isGeometryInactive | ( | const GEO & | geo | ) | const [inline] |
几何体是否不是叶子几何体。
bool HTools::isGeometryIndexed | ( | const GEO & | geo | ) | const [inline] |
几何体是否已经排过号了。
bool HTools::isGeometryUsed | ( | const GEO & | geo | ) | const [inline] |
下面一组函数通过几何体的 index 判断一个几何体的状态。 几何体是否在网格中被使用。
bool HTools::isRefined | ( | const GEO & | geo | ) | const [inline] |
判断一个几何体是否被细分。
bool HTools::isSemiregular | ( | const HGeometry< 1, DOW > & | geo | ) | const [inline] |
判断一个线段是否是半正则。对于线段来说,我们并未定义半正则,这个函 数是为了在高维时候判断使用的。此函数判断准则是:其是否有孩子被细分, 如果有则返回false,否则返回true。使用此函数我们来控制共享同一条边 或者棱的单元的级别差别最大为 1。
bool HTools::isSemiregular | ( | const HGeometry< 2, DOW > & | geo | ) | const [inline] |
判断一个三角形是否半正则。半正则需要满足两个条件:
这样我们事实上仅仅允许双生三角形的存在。
bool HTools::isSemiregular | ( | const HGeometry< 3, DOW > & | geo | ) | const [inline] |
判断一个四面体是否半正则。我们允许的过渡状态仅仅为双生四面体和四生 四面体的情形。其中四生四面体的情形比较复杂,理论上存在有一个四面体 的一个面被细分,但是对面的邻居却没有被细分的情况,过去的程序在此处 事实上是一个bug,现在的判断不会有问题了,并且,现在的判断可以适合 于区域分解并行处理的情况。
有一个面被细分的情形
检查细分的面内部的三个边是不是有还被细分的
void HTools::regularize_add_node | ( | HGEO & | hgeo, |
GeometryBM & | geo, | ||
VTX & | vtx | ||
) | const [inline] |
记录点的坐标
void HTools::regularize_add_side | ( | HGEO & | hgeo, |
GeometryBM & | geo | ||
) | const [inline] |
void HTools::regularize_add_triangle | ( | HGEO & | hgeo, |
GeometryBM & | geo | ||
) | const [inline] |
void HTools::regularize_add_twin_triangle | ( | HGEO & | hgeo, |
GeometryBM & | geo, | ||
int | k | ||
) | const [inline] |
bool HTools::semiregularizeBoundary | ( | HGEO & | geo | ) | const [inline] |
bool HTools::semiregularizeBoundary | ( | HGeometry< 3, DOW > & | geo | ) | const [inline] |
void HTools::setGeometryActive | ( | GEO & | geo | ) | const [inline] |
USED == ACTIVE
void HTools::setGeometryInactive | ( | GEO & | geo | ) | const [inline] |
设置几何体为非叶子状态。一般情形下会向边界递归,递归到一维时终止。
void HTools::setGeometryInactive | ( | HGeometry< 1, DOW > & | geo | ) | const [inline] |
void HTools::setGeometryUnused | ( | GEO & | geo | ) | const [inline] |
设置几何体为未用到状态。一般情形下会向边界递归,递归到一维时终止。
void HTools::setGeometryUnused | ( | HGeometry< 1, DOW > & | geo | ) | const [inline] |
void HTools::setGeometryUnusedRecursively | ( | GEO & | geo | ) | const [inline] |
向后代递归设置几何体为未用到状态。
void HTools::setGeometryUsed | ( | GEO & | geo | ) | const [inline] |
下面一组函数设置几何体的状态标识。 设置几何体为用到状态 USED。
void HTools::setGeometryUsed | ( | HGeometry< 0, DOW > & | geo | ) | const [inline] |
void HTools::setGeometryUsed | ( | HGeometry< 1, DOW > & | geo | ) | const [inline] |
void HTools::setParentInactive | ( | GEO & | geo | ) | const [inline] |
设置一个几何体的父亲为 INACTIVE 状态。