AFEPack
|
#include <MPI_HGeometry.h>
公有类型 | |
enum | { dim = FOREST::dim, dow = FOREST::dow } |
typedef FOREST | forest_t |
公有成员 | |
HGeometryMatcher (forest_t &forest) | |
bool | match_geometry () |
template<int GDIM> | |
bool | is_pack_match_geometry (HGeometry< GDIM, dow > *geo) const |
template<int GDIM> | |
void | pack_match_geometry (HGeometry< GDIM, dow > *geo, int remote_rank, AFEPack::ostream<> &os) |
template<int GDIM> | |
void | unpack_match_geometry (HGeometry< GDIM, dow > *geo, int remote_rank, AFEPack::istream<> &is) |
void | set_matcher (const matcher_t &_matcher) |
bool | sync_is_used () |
template<int GDIM> | |
void | pack_sync_is_used (HGeometry< GDIM, dow > *geo, int remote_rank, AFEPack::ostream<> &os) |
template<int GDIM> | |
void | unpack_sync_is_used (HGeometry< GDIM, dow > *geo, int remote_rank, AFEPack::istream<> &is) |
私有类型 | |
typedef HGeometryMatcher < forest_t > | this_t |
typedef forest_t::matcher_t | matcher_t |
私有成员 | |
const matcher_t & | matcher () const |
template<class GEO > | |
bool | is_shared_info_sent (GEO &geo) const |
template<class GEO > | |
void | set_shared_info_sent (GEO &geo) const |
template<class GEO > | |
Shared_object< GEO > * | new_shared_info (GEO &geo) const |
template<class GEO > | |
Shared_object< GEO > * | get_shared_info (GEO &geo) const |
template<class GEO > | |
void | geometry_reference_point (GEO &geo, afepack::Point< dow > &pnt) const |
void | geometry_reference_point (HGeometry< 0, dow > &geo, afepack::Point< dow > &pnt) const |
私有属性 | |
HTools | _tools |
forest_t * | _forest |
bool | _is_operated |
HGeometryMatcher 完成不同分区上最主要的数据匹配和交换的工作,这包 括不同分区上的共享几何体的匹配,以及不同分区上几何体上附着的信息 的交换。完成不同分区上共享几何体的匹配的过程中遵循下面的原则:
1. 每个几何体由谁来匹配:
a. 如果一个几何体有父亲几何体,则由其父亲完成匹配,因为有父亲的 几何体的共享结构必定与其父亲相同;
b. 如果一个几何体没有父亲几何体,则由其高一维的几何体完成匹配, 因为对没有父亲的几何体,其共享结构必定与其高一维几何体相同;
c. 对于点几何体,由其所属的线段几何体对其进行匹配,对于自适应 过程中产生的点几何体,其共享结构必定与其所属的线段几何体相 同;
2. 几何体的匹配信息可能发送多次,但是都是完全一致的信息;
下面实现的另一个交换是对几何体上的是否处于 USED 状态进行特定的同步, 使得其中的一个拷贝的成为 USED 状态时,其他的拷贝都会成为 USED 状态。
typedef FOREST MPI::HGeometryMatcher< FOREST >::forest_t |
typedef forest_t::matcher_t MPI::HGeometryMatcher< FOREST >::matcher_t [private] |
typedef HGeometryMatcher<forest_t> MPI::HGeometryMatcher< FOREST >::this_t [private] |
MPI::HGeometryMatcher< FOREST >::HGeometryMatcher | ( | forest_t & | forest | ) | [inline] |
void MPI::HGeometryMatcher< FOREST >::geometry_reference_point | ( | GEO & | geo, |
afepack::Point< dow > & | pnt | ||
) | const [inline, private] |
计算一个几何体做匹配时候的参考坐标点。
void MPI::HGeometryMatcher< FOREST >::geometry_reference_point | ( | HGeometry< 0, dow > & | geo, |
afepack::Point< dow > & | pnt | ||
) | const [inline, private] |
Shared_object<GEO>* MPI::HGeometryMatcher< FOREST >::get_shared_info | ( | GEO & | geo | ) | const [inline, private] |
bool MPI::HGeometryMatcher< FOREST >::is_pack_match_geometry | ( | HGeometry< GDIM, dow > * | geo | ) | const |
bool MPI::HGeometryMatcher< FOREST >::is_shared_info_sent | ( | GEO & | geo | ) | const [inline, private] |
bool MPI::HGeometryMatcher< FOREST >::match_geometry | ( | ) |
对几何遗传树中的几何体进行匹配,使得几何体的复制品在不同的分区 中具有完全相同的树结构。在树结构被修改了以后需要使用此操作进行 匹配。函数 pack_match_geometry 和 unpack_match_geometry 作为对 此操作中的函数指针的支持。返回是否确实进行了操作。
const matcher_t& MPI::HGeometryMatcher< FOREST >::matcher | ( | ) | const [inline, private] |
Shared_object<GEO>* MPI::HGeometryMatcher< FOREST >::new_shared_info | ( | GEO & | geo | ) | const [inline, private] |
void MPI::HGeometryMatcher< FOREST >::pack_match_geometry | ( | HGeometry< GDIM, dow > * | geo, |
int | remote_rank, | ||
AFEPack::ostream<> & | os | ||
) |
void MPI::HGeometryMatcher< FOREST >::pack_sync_is_used | ( | HGeometry< GDIM, dow > * | geo, |
int | remote_rank, | ||
AFEPack::ostream<> & | os | ||
) |
void MPI::HGeometryMatcher< FOREST >::set_matcher | ( | const matcher_t & | _matcher | ) | [inline] |
设置点匹配器。
void MPI::HGeometryMatcher< FOREST >::set_shared_info_sent | ( | GEO & | geo | ) | const [inline, private] |
bool MPI::HGeometryMatcher< FOREST >::sync_is_used | ( | ) |
对分区间共享的几何体的 index 进行同步化,如果有一个备份的设为了 USED 状态,就将所有备份都设置为 USED 状态。函数 pack_sync_is_used 和 unpack_sync_is_used 作为对 此操作中的函数指 针的支持。
void MPI::HGeometryMatcher< FOREST >::unpack_match_geometry | ( | HGeometry< GDIM, dow > * | geo, |
int | remote_rank, | ||
AFEPack::istream<> & | is | ||
) |
void MPI::HGeometryMatcher< FOREST >::unpack_sync_is_used | ( | HGeometry< GDIM, dow > * | geo, |
int | remote_rank, | ||
AFEPack::istream<> & | is | ||
) |
forest_t* MPI::HGeometryMatcher< FOREST >::_forest [private] |
bool MPI::HGeometryMatcher< FOREST >::_is_operated [private] |
HTools MPI::HGeometryMatcher< FOREST >::_tools [private] |