7 #include "rheolef/space.h"
32 # if _RHEOLEF_HAVE_ALLOCA_H
64 static size_t insert (
const std::string& str) {
69 #define YYMALLOC ::malloc
86 if (x.
spec !=
"mixed") { out << x.
spec; }
87 if (x.
spec !=
"mixed" || level != 0) { out <<
"("; }
88 std::list<tree_type>::const_iterator iter = x.
hier.begin(), last = x.
hier.end();
89 while (iter != last) {
92 if (iter != last) { out <<
"*"; }
94 if (x.
spec !=
"mixed" || level != 0) { out <<
")"; }
101 std::istream& is = ids.is();
102 communicator comm = ids.comm();
104 size_type my_proc = comm.rank();
106 if (my_proc == io_proc) {
107 std::getline (ids.is(), str);
109 #ifdef _RHEOLEF_HAVE_MPI
110 mpi::broadcast (mpi::communicator(), str, io_proc);
111 #endif // _RHEOLEF_HAVE_MPI
112 std::istringstream istrstr;
119 is.setstate (std::ios::badbit);
121 error_macro (
"internal error in space_constitution io (pass 2)");
125 template<
class T,
class M>
141 size_t d = omega.dimension();
145 for (
size_t i_comp = 0; i_comp < n_comp; i_comp++) {
149 constit.
data().initialize();
152 space_constitution<T,M> constit;
154 size_t n_comp = x.
hier.size();
155 constit.get_hierarchy().resize(n_comp);
156 std::list<tree_type>::const_iterator iter = x.
hier.begin();
157 for (
size_t i_comp = 0; i_comp < n_comp; i_comp++, ++iter) {
158 const tree_type& xi = *iter;
159 constit.get_hierarchy().operator[] (i_comp) = build_from_tree<T,M> (xi);
161 constit.data().initialize();
164 template<
class T,
class M>
170 constit = build_from_tree<T,M> (*ptr);
176 #ifdef _RHEOLEF_HAVE_MPI
178 #endif // _RHEOLEF_HAVE_MPI