8 #ifndef SRC_VTKWRITER_GRIDS_UTIL_HPP_
9 #define SRC_VTKWRITER_GRIDS_UTIL_HPP_
11 #include "util/util_debug.hpp"
26 template<
bool has_attributes,
typename St,
typename ele_g,
unsigned int i>
41 for (
size_t k = 0 ; k < vg.size() ; k++)
44 auto it = vg.get(k).g.getIterator();
50 v_out += std::to_string(vg.get(k).get_o(it.get()).
template get<i>()) +
"\n";
72 typedef typename boost::mpl::at<typename ele_g::value_type::value_type::type,boost::mpl::int_<i>>::type ctype;
76 if (std::rank<ctype>::value == 1)
79 std::string type = getType<typename std::remove_all_extents<ctype>::type>();
84 std::cerr <<
"Error " << __FILE__ <<
":" << __LINE__ <<
" the type " << demangle(
typeid(ctype).name()) <<
" is not supported by vtk\n";
93 std::string type = getType<ctype>();
103 v_out +=
"LOOKUP_TABLE default\n";
117 return ele_g::value_type::value_type::attributes::name[i] + out;
136 template<
typename ele_g,
typename St,
unsigned int i>
151 typedef typename boost::mpl::at<typename ele_g::value_type::value_type::type,boost::mpl::int_<i>>::type ctype;
155 if (std::rank<ctype>::value == 1)
158 std::string type = getType<typename std::remove_all_extents<ctype>::type>();
161 if (type.size() == 0)
163 std::cerr <<
"Error " << __FILE__ <<
":" << __LINE__ <<
" the type " << demangle(
typeid(ctype).name()) <<
" is not supported by vtk\n";
172 std::string type = getType<typename std::remove_all_extents<ctype>::type>();
175 if (type.size() == 0)
182 v_out +=
"LOOKUP_TABLE default\n";
195 return std::string(
"attr" + std::to_string(i) + oprp);
207 template<
typename I,
typename ele_g,
typename St,
typename T>
210 inline meta_prop(
const openfpm::vector< ele_g > & vg, std::string & v_out)
213 size_t sz = v_out.size();
219 if (v_out.size() != sz)
223 for (
size_t k = 0 ; k < vg.size() ; k++)
226 auto it = vg.get(k).g.getIterator();
232 v_out += std::to_string(vg.get(k).g.get_o(it.get()).
template get<I::value>()) +
"\n";
243 template<
typename I,
typename ele_g,
typename St,
typename T,
size_t N1>
246 inline meta_prop(
const openfpm::vector< ele_g > & vg, std::string & v_out)
249 size_t sz = v_out.size();
255 if (v_out.size() != sz)
259 for (
size_t k = 0 ; k < vg.size() ; k++)
262 auto it = vg.get(k).g.getIterator();
268 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
270 v_out += std::to_string(vg.get(k).g.get_o(it.get()).
template get<I::value>()[i1]) +
" ";
287 template<
typename I,
typename ele_g,
typename St ,
typename T,
size_t N1,
size_t N2>
290 inline meta_prop(
const openfpm::vector< ele_g > & vg, std::string & v_out)
292 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
294 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
297 size_t sz = v_out.size();
303 if (v_out.size() != sz)
307 for (
size_t k = 0 ; k < vg.size() ; k++)
310 auto it = vg.get(k).g.getIterator();
316 v_out += std::to_string(vg.get(k).g.get_o(it.get()).
template get<I::value>()[i1][i2]) +
"\n";
329 template<
typename I,
typename ele_g,
typename St,
typename T,
size_t N1,
size_t N2,
size_t N3>
332 inline meta_prop(
const openfpm::vector< ele_g > & vg, std::string & v_out)
334 for (
size_t i1 = 0 ; i1 < N1 ; i1++)
336 for (
size_t i2 = 0 ; i2 < N2 ; i2++)
338 for (
size_t i3 = 0 ; i3 < N3 ; i3++)
341 size_t sz = v_out.size();
347 if (v_out.size() != sz)
353 for (
size_t k = 0 ; k < vg.size() ; k++)
356 auto it = vg.get(k).g.getIterator();
362 v_out += std::to_string(vg.get(k).g.get_o(it.get()).
template get<I::value>()[i1][i2][i3]) +
"\n";
This class specialize functions in the case the type T has or not defined attributes.
static std::string get_attributes(const std::string &oprp)
Get the attributes name.
static std::string get_point_data(const openfpm::vector< ele_g > &vg)
For each vertex set the value.
static std::string get_point_property_header(const std::string &oprp)
Get the vtk properties header appending a prefix at the end.
static std::string get_point_property_header(const std::string &oprp)
Given a Graph return the point data header for a typename T.
static std::string get_attributes(const std::string &out)
Get the attributes name.