22 #include "rheolef/config.h"
24 #ifdef _RHEOLEF_HAVE_MPI
26 #include "rheolef/space.h"
27 #include "rheolef/space_mult.h"
40 base::get_constitution().set_ios_permutations (_idof2ios_dis_idof, _ios_idof2dis_idof);
53 if (approx ==
"")
return;
54 base::get_constitution().set_ios_permutations (_idof2ios_dis_idof, _ios_idof2dis_idof);
66 if (!
b.is_initialized())
return;
67 base::get_constitution().set_ios_permutations (_idof2ios_dis_idof, _ios_idof2dis_idof);
77 base::get_constitution().set_ios_permutations (_idof2ios_dis_idof, _ios_idof2dis_idof);
83 base::base_freeze_body();
92 size_type first_dis_iu = base::_iu_ownership.first_index();
93 size_type first_dis_ib = base::_ib_ownership.first_index();
94 for (
size_type idof = 0,
ndof = base::_idof2blk_dis_iub.size(); idof <
ndof; idof++) {
95 size_type first_dis_iub = base::_idof2blk_dis_iub [idof].is_blocked() ? first_dis_ib : first_dis_iu;
96 base::_idof2blk_dis_iub [idof].set_dis_iub (base::_idof2blk_dis_iub[idof].dis_iub() + first_dis_iub);
101 std::set<size_type> ext_dof_set;
102 base::get_constitution().compute_external_dofs (ext_dof_set);
103 base::_idof2blk_dis_iub.set_dis_indexes (ext_dof_set);
107 for (
typename std::set<size_type>::const_iterator iter = ext_dof_set.begin(), last = ext_dof_set.end();
108 iter != last; iter++) {
112 _ext_iu_set.insert (blk_dis_iub.
dis_iub());
114 _ext_ib_set.insert (blk_dis_iub.
dis_iub());
125 base::freeze_guard();
126 return base::_idof2blk_dis_iub.dis_at (
dis_idof).dis_iub();
132 base::freeze_guard();
133 return base::_idof2blk_dis_iub.dis_at (
dis_idof).is_blocked();
141 #endif // _RHEOLEF_HAVE_MPI