18 vector<vector<double>> res(2, vector<double>(3,0)) ;
19 auto x = std::minmax_element(
data[0].begin(),
data[0].end()) ;
20 auto y = std::minmax_element(
data[1].begin(),
data[1].end()) ;
21 auto z = std::minmax_element(
data[2].begin(),
data[2].end()) ;
22 res[0][0]=*(x.first) ; res[1][0]=*(x.second) ;
23 res[0][1]=*(y.first) ; res[1][1]=*(y.second) ;
24 res[0][2]=*(z.first) ; res[1][2]=*(z.second) ;
32 auto r = std::minmax_element(
data[6].begin(),
data[6].end()) ;
33 return {*r.first, *r.second} ;
39 std::map <DataValue, size_t>
data_mapping = {{
DataValue::pos, 0}, {
DataValue::vel, 3}, {
DataValue::radius, 6}, {
DataValue::mass, 7}, {
DataValue::omega,8}} ;
44 return data[idx].size()==0 ? nullptr : &(
data[idx+dd][0]) ;
60 size_t res = ceil(bytes*4*8/6.) ;
61 if (res%4) res = res + (4-(res%4)) ;
66 size_t res = ceil(bytes*8/6.) ;
67 if (res%4) res = res + (4-(res%4)) ;
72 return ((*
a) | *(
a+1)<<8 | *(
a+2)<<16 | *(
a+3)<<24) ;
77 static_assert((
sizeof(
float)==4)) ;
78 static_assert((
sizeof(
double)==8)) ;
80 #pragma GCC diagnostic push
81 #pragma GCC diagnostic ignored "-Wstrict-aliasing"
84 uint32_t v = b[0] | b[1]<<8 | b[2]<<16 | b[3]<<24 ;
85 return static_cast<double>(*
reinterpret_cast<float*
>(&v)) ;
90 for (
int i=1 ; i<8 ; i++) {v<<=8; v|=b[7-i] ;}
92 return *
reinterpret_cast<double *
>(&v) ;
95 #pragma GCC diagnostic pop
int curts
Definition: Reader.h:135
virtual int get_numts()
Definition: Reader.h:15
Definition: Reader-Yade.h:11
virtual int get_num_contacts()
Definition: Reader-Yade.h:37
virtual std::vector< std::vector< double > > get_bounds()
Definition: Reader-Yade.h:13
virtual int get_num_particles()
Definition: Reader-Yade.h:36
double byte2double(const uint8_t *b, char n)
Definition: Reader-Yade.h:75
int read_timestep(int ts)
Definition: Reader-Yade.cpp:4
v2d data
Definition: Reader-Yade.h:105
uint32_t bytes2uint32(const uint8_t *a)
Definition: Reader-Yade.h:70
size_t length_int2base64(uint64_t bytes)
Definition: Reader-Yade.h:58
std::map< DataValue, size_t > data_mapping
Definition: Reader-Yade.h:39
virtual double * get_data(DataValue datavalue, int dd, std::string name="")
Definition: Reader-Yade.h:40
std::vector< size_t > var_offsets
Definition: Reader-Yade.h:110
int N
Definition: Reader-Yade.h:106
std::vector< uint8_t > base64decode(const std::vector< uint8_t > &base64)
Definition: Reader-Yade.cpp:113
virtual int get_numts()
Definition: Reader-Yade.h:98
std::string raw64
Definition: Reader-Yade.h:111
std::string path
Definition: Reader-Yade.h:103
int dimension
Definition: Reader-Yade.h:104
std::vector< std::string > variables
Definition: Reader-Yade.h:109
virtual std::vector< double > get_minmaxradius()
Definition: Reader-Yade.h:28
int getfield_from_data(std::string name, std::vector< std::string > &variables, std::vector< size_t > &var_offsets, std::string &raw64)
Definition: Reader-Yade.cpp:52
size_t length_byte2base64(uint64_t bytes)
Definition: Reader-Yade.h:64
vector< vector< double > > v2d
Definition: Typedefs.h:10
DataValue
Definition: Typedefs.h:19
@ pos
Definition: Typedefs.h:19
@ vel
Definition: Typedefs.h:19
@ omega
Definition: Typedefs.h:19
@ radius
Definition: Typedefs.h:19
@ mass
Definition: Typedefs.h:19
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1181
unsigned int uint32_t
Definition: stdint.h:126
unsigned char uint8_t
Definition: stdint.h:124
unsigned __int64 uint64_t
Definition: stdint.h:136