AFEPack
|
#include <MPI_DOF.h>
公有类型 | |
typedef FOREST | forest_t |
typedef FESPACE | fe_space_t |
公有成员 | |
GlobalIndex () | |
GlobalIndex (const forest_t &forest) | |
GlobalIndex (const forest_t &forest, const fe_space_t &fe_sp) | |
GlobalIndex (const this_t &gi) | |
this_t & | operator= (const this_t &gi) |
void | build () |
void | build_primary_index (int *idx_ptr) const |
template<class LC , class GC > | |
void | translate (const LC &lc, GC &gc) const |
bool | is_dof_on_primary_geometry (u_int i) const |
查询一个自由度是否在主几何体上 | |
int | dof_primary_rank (u_int i) const |
查询一个自由度的首秩 | |
const forest_t & | forest () const |
void | set_forest (const forest_t &forest) |
const fe_space_t & | fe_space () const |
void | set_fe_space (const fe_space_t &fe_sp) |
u_int | n_global_dof () const |
u_int | n_primary_dof () const |
u_int | n_local_dof () const |
int | first_index () const |
int | last_index () const |
template<class MAP > | |
void | build_epetra_map (MAP &map) const |
template<class MAP , class INVMAP > | |
void | build_epetra_map (MAP &map, INVMAP &inv_map) const |
template<class INVEC , class OUTVEC > | |
void | scatter_hypre_vector (INVEC &iv, OUTVEC &ov) const |
const int & | operator() (u_int i) const |
int & | operator() (u_int i) |
template<int GDIM> | |
void | pack_global_idx (HGeometry< GDIM, fe_space_t::dow > *geo, int remote_rank, AFEPack::ostream<> &os) |
template<int GDIM> | |
void | unpack_global_idx (HGeometry< GDIM, fe_space_t::dow > *geo, int remote_rank, AFEPack::istream<> &is) |
私有类型 | |
enum | { UNUSED_IDX = -1 } |
typedef std::vector< int > | base_t |
typedef GlobalIndex< forest_t, fe_space_t > | this_t |
私有成员 | |
bool | _is_dof_on_primary_geometry (u_int i) const |
查询一个自由度是否在主几何体上 | |
void | sync_idx () |
私有属性 | |
const forest_t * | _forest |
const fe_space_t * | _fe_sp |
u_int | _n_global_dof |
u_int | _n_primary_dof |
int | _first_idx |
property_id_t< BinaryBuffer<> > | _pid_global_idx |
std::vector< bool > | _idopg |
进程间进行自由度指标同步 |
typedef std::vector<int> MPI::DOF::GlobalIndex< FOREST, FESPACE >::base_t [private] |
typedef FESPACE MPI::DOF::GlobalIndex< FOREST, FESPACE >::fe_space_t |
typedef FOREST MPI::DOF::GlobalIndex< FOREST, FESPACE >::forest_t |
typedef GlobalIndex<forest_t,fe_space_t> MPI::DOF::GlobalIndex< FOREST, FESPACE >::this_t [private] |
MPI::DOF::GlobalIndex< FOREST, FESPACE >::GlobalIndex | ( | ) | [inline] |
MPI::DOF::GlobalIndex< FOREST, FESPACE >::GlobalIndex | ( | const forest_t & | forest | ) | [inline, explicit] |
MPI::DOF::GlobalIndex< FOREST, FESPACE >::GlobalIndex | ( | const forest_t & | forest, |
const fe_space_t & | fe_sp | ||
) | [inline] |
MPI::DOF::GlobalIndex< FOREST, FESPACE >::GlobalIndex | ( | const this_t & | gi | ) | [inline] |
bool MPI::DOF::GlobalIndex< FOREST, FESPACE >::_is_dof_on_primary_geometry | ( | u_int | i | ) | const [private] |
查询一个自由度是否在主几何体上
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::build | ( | ) |
建立全局自由度指标。
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::build_epetra_map | ( | MAP & | map | ) | const |
建立 Trilinos 的 Epetra 的映射。
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::build_epetra_map | ( | MAP & | map, |
INVMAP & | inv_map | ||
) | const |
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::build_primary_index | ( | int * | idx_ptr | ) | const |
从本地自由度中抽出所有在首秩上的自由度,放入数组 idx_ptr 中。
int MPI::DOF::GlobalIndex< FOREST, FESPACE >::dof_primary_rank | ( | u_int | i | ) | const |
查询一个自由度的首秩
const fe_space_t& MPI::DOF::GlobalIndex< FOREST, FESPACE >::fe_space | ( | ) | const [inline] |
取有限元空间。
int MPI::DOF::GlobalIndex< FOREST, FESPACE >::first_index | ( | ) | const [inline] |
const forest_t& MPI::DOF::GlobalIndex< FOREST, FESPACE >::forest | ( | ) | const [inline] |
取森林。
bool MPI::DOF::GlobalIndex< FOREST, FESPACE >::is_dof_on_primary_geometry | ( | u_int | i | ) | const |
查询一个自由度是否在主几何体上
int MPI::DOF::GlobalIndex< FOREST, FESPACE >::last_index | ( | ) | const [inline] |
u_int MPI::DOF::GlobalIndex< FOREST, FESPACE >::n_global_dof | ( | ) | const [inline] |
取全局自由度个数,局部的在首秩上的自由度个数,局部的自由度个数, 以及第一个在首秩上的自由度的全局指标。
u_int MPI::DOF::GlobalIndex< FOREST, FESPACE >::n_local_dof | ( | ) | const [inline] |
u_int MPI::DOF::GlobalIndex< FOREST, FESPACE >::n_primary_dof | ( | ) | const [inline] |
const int& MPI::DOF::GlobalIndex< FOREST, FESPACE >::operator() | ( | u_int | i | ) | const [inline] |
取局部的第 i 个自由度的全局指标。
int& MPI::DOF::GlobalIndex< FOREST, FESPACE >::operator() | ( | u_int | i | ) | [inline] |
this_t& MPI::DOF::GlobalIndex< FOREST, FESPACE >::operator= | ( | const this_t & | gi | ) | [inline] |
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::pack_global_idx | ( | HGeometry< GDIM, fe_space_t::dow > * | geo, |
int | remote_rank, | ||
AFEPack::ostream<> & | os | ||
) |
内部使用。在建立全局指标时打包和解包数据。
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::scatter_hypre_vector | ( | INVEC & | iv, |
OUTVEC & | ov | ||
) | const |
将 Hypre 的全局向量分发为局部向量。
Hypre 的全局向量仅仅能够读出在本进程上的元素,而分布式的有限元 函数需要部分远程的元素才能够构建完整的信息。本函数将 Hypre 的向 量中的元素进行一些分发,使得分布式的有限元函数能够获得其需要的 远程元素的值,从而其能够被 AFEPack 的内部使用。
模板参数 INVEC 需为 HYPRE_IJVector, OUTVEC 需为 Vector<double> 或者其派生类。
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::set_fe_space | ( | const fe_space_t & | fe_sp | ) | [inline] |
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::set_forest | ( | const forest_t & | forest | ) | [inline] |
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::sync_idx | ( | ) | [private] |
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::translate | ( | const LC & | lc, |
GC & | gc | ||
) | const |
从本地到全局指标数组的转换。
void MPI::DOF::GlobalIndex< FOREST, FESPACE >::unpack_global_idx | ( | HGeometry< GDIM, fe_space_t::dow > * | geo, |
int | remote_rank, | ||
AFEPack::istream<> & | is | ||
) |
const fe_space_t* MPI::DOF::GlobalIndex< FOREST, FESPACE >::_fe_sp [private] |
int MPI::DOF::GlobalIndex< FOREST, FESPACE >::_first_idx [private] |
const forest_t* MPI::DOF::GlobalIndex< FOREST, FESPACE >::_forest [private] |
std::vector<bool> MPI::DOF::GlobalIndex< FOREST, FESPACE >::_idopg [private] |
进程间进行自由度指标同步
u_int MPI::DOF::GlobalIndex< FOREST, FESPACE >::_n_global_dof [private] |
u_int MPI::DOF::GlobalIndex< FOREST, FESPACE >::_n_primary_dof [private] |
property_id_t<BinaryBuffer<> > MPI::DOF::GlobalIndex< FOREST, FESPACE >::_pid_global_idx [private] |