AFEPack
|
组合类型 | |
struct | matchTolerence |
函数 | |
template<int DIM, int DOW> | |
void | collectGeometry (HGeometry< DIM, DOW > &geo, int bnd_mark, property_id_t< bool > &pid, std::vector< std::vector< void * > > &bnd_geo) |
template<class GEO > | |
void | geometry_reference_point (const GEO &geo, Point< GEO::dow > &pnt) |
template<int DOW> | |
void | geometry_reference_point (const HGeometry< 0, DOW > &geo, Point< DOW > &pnt) |
template<int DIM, class FOREST > | |
void | matchRankGeometryBuffer (FOREST &forest, int local_rank, std::vector< void * > &local_geo, std::vector< Point< FOREST::dow > > &local_grp, int remote_rank, std::vector< void * > &remote_geo, std::vector< Point< FOREST::dow > > &remote_grp) |
template<int DIM, class FOREST > | |
void | matchRankGeometry (FOREST &forest, int shift, std::vector< void * > &geo, std::vector< Point< FOREST::dow > > &grp, BinaryBuffer<> &buf, int tag) |
template<int DIM, class FOREST > | |
void | matchGeometry (FOREST &forest, std::vector< void * > &geo) |
void MPI::Periodic::details::collectGeometry | ( | HGeometry< DIM, DOW > & | geo, |
int | bnd_mark, | ||
property_id_t< bool > & | pid, | ||
std::vector< std::vector< void * > > & | bnd_geo | ||
) |
对几何体geo及其低维几何体中的周期几何体进行收集。
对孩子进行匹配
对边界进行匹配
对顶点进行匹配
void MPI::Periodic::details::geometry_reference_point | ( | const GEO & | geo, |
Point< GEO::dow > & | pnt | ||
) |
计算一个几何体做匹配时候的参考坐标点。
void MPI::Periodic::details::geometry_reference_point | ( | const HGeometry< 0, DOW > & | geo, |
Point< DOW > & | pnt | ||
) |
void MPI::Periodic::details::matchGeometry | ( | FOREST & | forest, |
std::vector< void * > & | geo | ||
) |
对DIM维的周期几何体进行匹配。
准备发送数据的缓冲区。
void MPI::Periodic::details::matchRankGeometry | ( | FOREST & | forest, |
int | shift, | ||
std::vector< void * > & | geo, | ||
std::vector< Point< FOREST::dow > > & | grp, | ||
BinaryBuffer<> & | buf, | ||
int | tag | ||
) |
对第DIM维的周期几何体进行匹配。此处仅仅是发送和接收数据,然后 调用 matchRankGeometryBuffer 完成具体的匹配操作。
void MPI::Periodic::details::matchRankGeometryBuffer | ( | FOREST & | forest, |
int | local_rank, | ||
std::vector< void * > & | local_geo, | ||
std::vector< Point< FOREST::dow > > & | local_grp, | ||
int | remote_rank, | ||
std::vector< void * > & | remote_geo, | ||
std::vector< Point< FOREST::dow > > & | remote_grp | ||
) |
对本地几何体和远程几何体进行匹配。参数中
forest 是几何遗传树; local_* 分别是本地的进程号,几何体的指针数组和参考坐标点。 remote_* 分别是远程的进程号,几何体的指针数组和参考坐标点。
需要注意的是远程进程也可能就是本地进程自身,此处是统一处理的。 当匹配的时候,如果匹配上,但是类型为 0 的话,则两个几何体是本 质相同的,应该已经匹配过了,所以此处也屏蔽掉这样的情况。约定 匹配函数非负的返回值是匹配上,负值是没有匹配上。在用户自身写 匹配器的情况请注意这一约定。
匹配上但是不是同一个几何体的情形
注意如果上面匹配上了以后也还要继续进行匹配,因为一个几 何体在同一个进程上可能有多个不完全一致的拷贝。