AFEPack
组合类型 | 函数
MPI::Periodic::details命名空间参考

组合类型

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)

函数文档

template<int DIM, int DOW>
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及其低维几何体中的周期几何体进行收集。

对孩子进行匹配

对边界进行匹配

对顶点进行匹配

template<class GEO >
void MPI::Periodic::details::geometry_reference_point ( const GEO geo,
Point< GEO::dow > &  pnt 
)

计算一个几何体做匹配时候的参考坐标点。

template<int DOW>
void MPI::Periodic::details::geometry_reference_point ( const HGeometry< 0, DOW > &  geo,
Point< DOW > &  pnt 
)
template<int DIM, class FOREST >
void MPI::Periodic::details::matchGeometry ( FOREST &  forest,
std::vector< void * > &  geo 
)

对DIM维的周期几何体进行匹配。

准备发送数据的缓冲区。

template<int DIM, class FOREST >
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 完成具体的匹配操作。

template<int DIM, class FOREST >
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 的话,则两个几何体是本 质相同的,应该已经匹配过了,所以此处也屏蔽掉这样的情况。约定 匹配函数非负的返回值是匹配上,负值是没有匹配上。在用户自身写 匹配器的情况请注意这一约定。

匹配上但是不是同一个几何体的情形

注意如果上面匹配上了以后也还要继续进行匹配,因为一个几 何体在同一个进程上可能有多个不完全一致的拷贝。