75 #ifndef SLIP_REGULARVECTOR3DFIELD3D_HPP
76 #define SLIP_REGULARVECTOR3DFIELD3D_HPP
101 #include <boost/serialization/access.hpp>
102 #include <boost/serialization/split_member.hpp>
103 #include <boost/serialization/version.hpp>
104 #include <boost/serialization/base_object.hpp>
110 class stride_iterator;
113 class iterator3d_box;
116 class iterator3d_range;
119 class const_iterator3d_box;
122 class const_iterator3d_range;
133 template <
typename T,
typename Gr
idT>
136 template <
typename T,
typename Gr
idT>
137 std::ostream& operator<<(std::ostream & out, const slip::RegularVector3dField3d<T,GridT>& a);
160 template <
typename T,
typename Gr
idT =
double>
209 static const std::size_t
DIM = 3;
220 base(),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
232 base(slices,rows,cols),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
248 base(slices,rows,cols),init_point_(init_point),grid_step_(grid_step)
263 base(slices,rows,cols,val),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
281 base(slices,rows,cols,val),init_point_(init_point),grid_step_(grid_step)
295 base(slices,rows,cols,val),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
314 base(slices,rows,cols,val),init_point_(init_point),grid_step_(grid_step)
328 base(slices,rows,cols,val),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
347 base(slices,rows,cols,val),init_point_(init_point),grid_step_(grid_step)
362 template<
typename InputIterator>
368 base(slices,rows,cols,first,last),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
384 template<
typename InputIterator>
392 base(slices,rows,cols,first,last),init_point_(init_point),grid_step_(grid_step)
412 template<
typename InputIterator>
416 InputIterator first1,
418 InputIterator first2,
419 InputIterator first3):
420 base(slices,rows,cols),init_point_(slip::
Point3d<GridT>()),grid_step_(slip::
Point3d<GridT>(GridT(1),GridT(1),GridT(1)))
423 std::vector<InputIterator> first_iterators_list(3);
424 first_iterators_list[0] = first1;
425 first_iterators_list[1] = first2;
426 first_iterators_list[2] = first3;
427 this->
fill(first_iterators_list,last1);
449 template<
typename InputIterator>
455 InputIterator first1,
457 InputIterator first2,
458 InputIterator first3):
459 base(slices,rows,cols),init_point_(init_point),grid_step_(grid_step)
462 std::vector<InputIterator> first_iterators_list(3);
463 first_iterators_list[0] = first1;
464 first_iterators_list[1] = first2;
465 first_iterators_list[2] = first3;
466 this->
fill(first_iterators_list,last1);
474 base(rhs),init_point_(rhs.init_point_),grid_step_(rhs.grid_step_)
491 std::string
name()
const;
505 friend std::ostream& operator<< <>(std::ostream & out,
const self& a);
526 const std::string& title,
527 const std::string& zone)
const;
537 const std::string& title,
538 const std::string& zone)
const;
564 const int zone_loaded=1);
1071 template<
typename Container3D>
1074 const std::size_t der_order,
1075 const std::size_t sch_order,
1076 Container3D& result)
const
1078 assert(component < 3);
1079 assert(sch_order >= der_order);
1083 assert(sch_order / 2 <= sch_order);
1084 const std::size_t sch_shift = sch_order / 2;
1087 std::vector<slip::Matrix<double>::iterator> kernels_iterators(sch_order + 1);
1088 for(std::size_t i = 0; i < (sch_order + 1); ++i)
1090 kernels_iterators[i] = kernels.
row_begin(i);
1110 result.row_begin(k,i));
1131 result.col_rbegin(k,j));
1152 result.slice_rbegin(i,j));
1198 template<
typename Container3D>
1201 const std::size_t der_order,
1202 const std::size_t sch_order,
1204 Container3D& result)
const
1206 assert(component < 3);
1207 assert(sch_order >= der_order);
1211 assert(sch_order / 2 <= sch_order);
1212 const std::size_t sch_shift = sch_order / 2;
1215 std::vector<slip::Matrix<double>::iterator> kernels_iterators(sch_order + 1);
1216 for(std::size_t i = 0; i < (sch_order + 1); ++i)
1218 kernels_iterators[i] = kernels.
row_begin(i);
1236 this->
row_end(component, k,i, range_row),
1241 result.row_begin(k,i, range_row));
1256 this->
col_rend(component, k,j, range_col),
1261 result.col_rbegin(k,j, range_col));
1276 this->
slice_rend(component, i,j, range_slice),
1281 result.slice_rbegin(i,j, range_slice));
1305 template<
typename Container3D>
1307 Container3D& result)
const
1309 assert(sch_order >= 1);
1310 assert(sch_order / 2 <= sch_order);
1311 const std::size_t der_order = 1;
1315 std::size_t component = 0;
1352 template<
typename Container3D>
1354 Container3D& result)
const
1356 assert(sch_order >= 1);
1357 assert(sch_order / 2 <= sch_order);
1358 const std::size_t sch_shift = sch_order / 2;
1363 const std::size_t der_order = 1;
1366 std::vector<slip::Matrix<double>::iterator> kernelsx_iterators(sch_order + 1);
1367 for(std::size_t i = 0; i < (sch_order + 1); ++i)
1369 kernelsx_iterators[i] = kernelsx.
row_begin(i);
1373 kernelsx_iterators);
1376 std::vector<slip::Matrix<double>::iterator> kernelsy_iterators(sch_order + 1);
1377 for(std::size_t i = 0; i < (sch_order + 1); ++i)
1379 kernelsy_iterators[i] = kernelsy.
row_begin(i);
1383 kernelsy_iterators);
1386 std::vector<slip::Matrix<double>::iterator> kernelsz_iterators(sch_order + 1);
1387 for(std::size_t i = 0; i < (sch_order + 1); ++i)
1389 kernelsz_iterators[i] = kernelsz.
row_begin(i);
1393 kernelsz_iterators);
1395 std::size_t vort_component = 2;
1398 std::size_t component = 1;
1427 result.col_rbegin(vort_component,k,j));
1462 result.row_begin(vort_component,k,i));
1497 result.col_rbegin(vort_component,k,j));
1501 slip::minus(result.begin(vort_component),result.end(vort_component),Mtmp.
begin(),result.
begin(vort_component));
1527 template<
typename Container3D,
typename Container3D1,
typename Container3D2,
typename Container3D3>
1529 Container3D& Lambda, Container3D1& LambdaV1, Container3D2& LambdaV2, Container3D3& LambdaV3)
const
1535 assert(sch_order >= 1);
1536 const std::size_t der_order = 1;
1543 std::size_t component = 0;
1599 Lambda.resize(slices,rows,cols);
1600 LambdaV1.resize(slices,rows,cols);
1601 LambdaV2.resize(slices,rows,cols);
1602 LambdaV3.resize(slices,rows,cols);
1611 S(0,0)=D11[k][i][j];
1612 S(1,1)=D22[k][i][j];
1613 S(2,2)=D33[k][i][j];
1614 S(0,1)=0.5*(D12[k][i][j]+D21[k][i][j]);
1615 S(0,2)=0.5*(D13[k][i][j]+D31[k][i][j]);
1617 S(1,2)=0.5*(D23[k][i][j]+D32[k][i][j]);
1620 O(0,1)=0.5*(D12[k][i][j]-D21[k][i][j]);
1621 O(0,2)=0.5*(D13[k][i][j]-D31[k][i][j]);
1623 O(1,2)=0.5*(D23[k][i][j]-D32[k][i][j]);
1647 for(std::size_t kc=0; kc<2; ++kc)
1649 Lambda[k][i][j][kc]=lambda[kc];
1651 LambdaV1[k][i][j][kc]=eigenvectors[kc][0];
1652 LambdaV2[k][i][j][kc]=eigenvectors[kc][1];
1653 LambdaV3[k][i][j][kc]=eigenvectors[kc][2];
1681 template<
typename Container3D>
1683 Container3D& Lambda)
const
1689 assert(sch_order >= 1);
1690 const std::size_t der_order = 1;
1697 std::size_t component = 0;
1750 Lambda.resize(slices,rows,cols);
1759 S(0,0)=D11[k][i][j];
1760 S(1,1)=D22[k][i][j];
1761 S(2,2)=D33[k][i][j];
1762 S(0,1)=0.5*(D12[k][i][j]+D21[k][i][j]);
1763 S(0,2)=0.5*(D13[k][i][j]+D31[k][i][j]);
1765 S(1,2)=0.5*(D23[k][i][j]+D32[k][i][j]);
1768 O(0,1)=0.5*(D12[k][i][j]-D21[k][i][j]);
1769 O(0,2)=0.5*(D13[k][i][j]-D31[k][i][j]);
1771 O(1,2)=0.5*(D23[k][i][j]-D32[k][i][j]);
1788 for(std::size_t kc = 0; kc < 2; ++kc)
1790 Lambda[k][i][j][kc]=lambda[kc];
1806 template<
typename Container3D>
1807 void norm(Container3D& result)
const
1825 template<
class Archive>
1826 void save(Archive & ar,
const unsigned int version)
const
1828 ar & init_point_ & grid_step_;
1829 ar & boost::serialization::base_object<slip::GenericMultiComponent3d<slip::Vector3d<T> > >(*this);
1831 template<
class Archive>
1832 void load(Archive & ar,
const unsigned int version)
1834 ar & init_point_ & grid_step_;
1835 ar & boost::serialization::base_object<slip::GenericMultiComponent3d<slip::Vector3d<T> > >(*this);
1837 BOOST_SERIALIZATION_SPLIT_MEMBER()
1884 template<
typename T,
typename Gr
idT>
1885 RegularVector3dField3d<T,GridT>
operator+(
const RegularVector3dField3d<T,GridT>& M1,
1894 template<
typename T,
typename Gr
idT>
1895 RegularVector3dField3d<T,GridT>
operator+(
const T& val,
1896 const RegularVector3dField3d<T,GridT>& M1);
1905 template<
typename T,
typename Gr
idT>
1906 RegularVector3dField3d<T,GridT>
operator-(
const RegularVector3dField3d<T,GridT>& M1,
1915 template<
typename T,
typename Gr
idT>
1916 RegularVector3dField3d<T,GridT>
operator-(
const T& val,
1917 const RegularVector3dField3d<T,GridT>& M1);
1927 template<
typename T,
typename Gr
idT>
1928 RegularVector3dField3d<T,GridT>
operator*(
const RegularVector3dField3d<T,GridT>& M1,
1937 template<
typename T,
typename Gr
idT>
1938 RegularVector3dField3d<T,GridT>
operator*(
const T& val,
1939 const RegularVector3dField3d<T,GridT>& M1);
1949 template<
typename T,
typename Gr
idT>
1950 RegularVector3dField3d<T,GridT>
operator/(
const RegularVector3dField3d<T,GridT>& M1,
1962 template<
typename T,
typename Gr
idT>
1963 RegularVector3dField3d<T,GridT>
operator+(
const RegularVector3dField3d<T,GridT>& M1,
1964 const RegularVector3dField3d<T,GridT>& M2);
1972 template<
typename T,
typename Gr
idT>
1973 RegularVector3dField3d<T,GridT>
operator+(
const RegularVector3dField3d<T,GridT>& M1,
1982 template<
typename T,
typename Gr
idT>
1984 const RegularVector3dField3d<T,GridT>& M1);
1996 template<
typename T,
typename Gr
idT>
1997 RegularVector3dField3d<T,GridT>
operator-(
const RegularVector3dField3d<T,GridT>& M1,
1998 const RegularVector3dField3d<T,GridT>& M2);
2007 template<
typename T,
typename Gr
idT>
2008 RegularVector3dField3d<T,GridT>
operator-(
const RegularVector3dField3d<T,GridT>& M1,
2017 template<
typename T,
typename Gr
idT>
2019 const RegularVector3dField3d<T,GridT>& M1);
2031 template<
typename T,
typename Gr
idT>
2032 RegularVector3dField3d<T,GridT>
operator*(
const RegularVector3dField3d<T,GridT>& M1,
2033 const RegularVector3dField3d<T,GridT>& M2);
2042 template<
typename T,
typename Gr
idT>
2043 RegularVector3dField3d<T,GridT>
operator*(
const RegularVector3dField3d<T,GridT>& M1,
2052 template<
typename T,
typename Gr
idT>
2054 const RegularVector3dField3d<T,GridT>& M1);
2066 template<
typename T,
typename Gr
idT>
2067 RegularVector3dField3d<T,GridT>
operator/(
const RegularVector3dField3d<T,GridT>& M1,
2068 const RegularVector3dField3d<T,GridT>& M2);
2076 template<
typename T,
typename Gr
idT>
2077 RegularVector3dField3d<T,GridT>
operator/(
const RegularVector3dField3d<T,GridT>& M1,
2100 template<
typename T,
typename Gr
idT>
2104 std::fill_n(this->begin(),this->size(),val);
2109 template<
typename T,
typename Gr
idT>
2113 std::fill_n(this->begin(),this->size(),val);
2118 template<
typename T,
typename Gr
idT>
2124 return (*
this)[k][i][j][0];
2127 template<
typename T,
typename Gr
idT>
2133 return (*
this)[k][i][j][0];
2136 template<
typename T,
typename Gr
idT>
2142 return this->Vx1(k,i,j);
2145 template<
typename T,
typename Gr
idT>
2151 return this->Vx1(k,i,j);
2155 template<
typename T,
typename Gr
idT>
2161 return (*
this)[k][i][j][1];
2165 template<
typename T,
typename Gr
idT>
2171 return (*
this)[k][i][j][1];
2173 template<
typename T,
typename Gr
idT>
2179 return this->Vx2(k,i,j);
2183 template<
typename T,
typename Gr
idT>
2189 return this->Vx2(k,i,j);
2193 template<
typename T,
typename Gr
idT>
2199 return (*
this)[k][i][j][2];
2202 template<
typename T,
typename Gr
idT>
2208 return (*
this)[k][i][j][2];
2211 template<
typename T,
typename Gr
idT>
2217 return this->Vx3(k,i,j);
2220 template<
typename T,
typename Gr
idT>
2226 return this->Vx3(k,i,j);
2230 template<
typename T,
typename Gr
idT>
2237 return (*
this)[k][i][j].Euclidean_norm();
2240 template<
typename T,
typename Gr
idT>
2246 return this->init_point_[0] + GridT(j) * this->grid_step_[0];
2249 template<
typename T,
typename Gr
idT>
2255 return this->init_point_[1] + GridT(this->rows() - 1 - i) * this->grid_step_[1];
2258 template<
typename T,
typename Gr
idT>
2264 return this->init_point_[2] + GridT(this->slices() - 1 - k) * this->grid_step_[2];
2267 template<
typename T,
typename Gr
idT>
2273 return this->x1(k,i,j);
2276 template<
typename T,
typename Gr
idT>
2282 return this->x2(k,i,j);
2285 template<
typename T,
typename Gr
idT>
2291 return this->x3(k,i,j);
2294 template<
typename T,
typename Gr
idT>
2298 return this->init_point_;
2301 template<
typename T,
typename Gr
idT>
2305 this->init_point_ = init_point;
2308 template<
typename T,
typename Gr
idT>
2312 return this->grid_step_;
2315 template<
typename T,
typename Gr
idT>
2319 this->grid_step_ = grid_step;
2322 template<
typename T,
typename Gr
idT>
2330 template<
typename T,
typename Gr
idT>
2338 template<
typename T,
typename Gr
idT>
2346 template<
typename T,
typename Gr
idT>
2356 template<
typename T,
typename Gr
idT>
2364 template<
typename T,
typename Gr
idT>
2372 template<
typename T,
typename Gr
idT>
2380 template<
typename T,
typename Gr
idT>
2390 template<
typename T,
typename Gr
idT>
2395 std::transform(this->begin(),this->end(),tmp.
begin(),std::negate<slip::Vector3d<T> >());
2399 template<
typename T,
typename Gr
idT>
2403 assert(this->dim1() == rhs.
dim1());
2404 assert(this->dim2() == rhs.
dim2());
2405 assert(this->dim3() == rhs.
dim3());
2414 std::transform(this->begin(),this->end(),rhs.
begin(),this->begin(),std::plus<typename RegularVector3dField3d::value_type>());
2418 template<
typename T,
typename Gr
idT>
2422 assert(this->dim1() == rhs.
dim1());
2423 assert(this->dim2() == rhs.
dim2());
2424 assert(this->dim3() == rhs.
dim3());
2433 std::transform(this->begin(),this->end(),rhs.
begin(),this->begin(),std::minus<typename RegularVector3dField3d::value_type>());
2437 template<
typename T,
typename Gr
idT>
2441 assert(this->dim1() == rhs.
dim1());
2442 assert(this->dim2() == rhs.
dim2());
2443 assert(this->dim3() == rhs.
dim3());
2452 std::transform(this->begin(),this->end(),rhs.
begin(),this->begin(),std::multiplies<typename RegularVector3dField3d::value_type>());
2456 template<
typename T,
typename Gr
idT>
2460 assert(this->dim1() == rhs.
dim1());
2461 assert(this->dim2() == rhs.
dim2());
2462 assert(this->dim3() == rhs.
dim3());
2471 std::transform(this->begin(),this->end(),rhs.
begin(),this->begin(),std::divides<typename RegularVector3dField3d::value_type>());
2476 template <
typename T,
typename Gr
idT>
2482 out<<
"init point: "<<a.init_point_<<std::endl;
2483 out<<
"grid step: "<<a.grid_step_<<std::endl;
2484 out<<
"data: "<<std::endl;
2486 const size_type slices = a.
slices();
2487 const size_type rows = a.
rows();
2488 const size_type cols = a.
cols();
2489 for(size_type k = 0; k < slices; ++k)
2491 for(size_type i = 0; i < rows; ++i)
2493 for(size_type j = 0; j < cols; ++j)
2495 out<<a[k][i][j]<<
" ";
2504 template<
typename T,
typename Gr
idT>
2517 template<
typename T,
typename Gr
idT>
2520 const std::string& title,
2521 const std::string& zone)
const
2523 slip::write_tecplot_vect3d<RegularVector3dField3d<T,GridT> >(*
this,
2531 template<
typename T,
typename Gr
idT>
2534 const std::string& title,
2535 const std::string& zone)
const
2551 template<
typename T,
typename Gr
idT>
2555 slip::read_tecplot_vect3d<RegularVector3dField3d<T,GridT> >(file_path_name,
2561 template<
typename T,
typename Gr
idT>
2564 const int zone_loaded)
2566 std::string _useless_string;
2567 std::vector<std::string> _useless_varnames;
2576 template<
typename T,
typename Gr
idT>
2586 template<
typename T,
typename Gr
idT>
2594 template<
typename T,
typename Gr
idT>
2604 template<
typename T,
typename Gr
idT>
2613 template<
typename T,
typename Gr
idT>
2623 template<
typename T,
typename Gr
idT>
2632 template<
typename T,
typename Gr
idT>
2642 template<
typename T,
typename Gr
idT>
2654 template<
typename T,
typename Gr
idT>
2664 template<
typename T,
typename Gr
idT>
2674 template<
typename T,
typename Gr
idT>
2686 template<
typename T,
typename Gr
idT>
2696 template<
typename T,
typename Gr
idT>
2705 template<
typename T,
typename Gr
idT>
2717 template<
typename T,
typename Gr
idT>
2727 template<
typename T,
typename Gr
idT>
2736 template<
typename T,
typename Gr
idT>
2748 template<
typename T,
typename Gr
idT>
2763 #endif //SLIP_REGULARVECTOR3DFIELD3D_HPP
void minus(InputIterator1 __first1, InputIterator1 __last1, InputIterator2 __first2, OutputIterator __result)
Computes the difference of two ranges.
slip::RegularVector3dField3d< double, double > RegularVector3dField3d_d
double alias
This is some iterator to iterate a 3d container into a plane area defined by the subscripts of the 3d...
void write_tecplot(const std::string &file_path_name, const std::string &title, const std::string &zone) const
Writes a RegularVector3dField3d to a tecplot file path name.
RegularVector3dField3d< double, double > Regular3D3Cd
double alias
void read_tecplot(const std::string &file_path_name)
Reads a RegularVector3dField3d from a tecplot file path name.
CoordType width() const
compute the width of the Box3d.
const GridT x(const size_type k, const size_type i, const size_type j) const
Subscript access to the real x1 value of the indexed (k,i,j) point of the RegularVector3dField3d.
slip::RegularVector3dField3d< float, float > RegularVector3dField3d_f
float alias
ptrdiff_t difference_type
RegularVector3dField3d< float, double > Regular3D3C_f
float alias
self & operator+=(const T &val)
Add val to each element of the RegularVector3dField3d.
T & Vx2(const size_type k, const size_type i, const size_type j)
Subscript access to second element of the data contained in the RegularVector3dField3d.
size_type dim3() const
Returns the number of columns (third dimension size) in the GenericMultiComponent3d.
const GridT y(const size_type k, const size_type i, const size_type j) const
Subscript access to the real x2 value of the indexed (k,i,j) point of the RegularVector3dField3d.
size_type rows() const
Returns the number of rows (first dimension size) in the GenericMultiComponent3d. ...
This is a Vector3d struct. It is a specialization of kvector. It implements some specific 3d operatio...
self & operator-=(const T &val)
norm_type Euclidean_norm() const
Returns the Euclidean norm of the elements of the kvector.
slip::kstride_iterator< const_vector3d_pointer, 3 > const_vector3d_iterator
iterator begin()
Returns a read/write iterator that points to the first element in the GenericMultiComponent3d. Iteration is done in ordinary element order.
Color< T > operator+(const Color< T > &V1, const Color< T > &V2)
row_iterator row_begin(const size_type slice, const size_type row)
Returns a read/write iterator that points to the first element of the row row of the slice slice in t...
std::reverse_iterator< const_iterator > const_reverse_iterator
size_type dim2() const
Returns the number of rows (second dimension size) in the GenericMultiComponent3d.
void divides(InputIterator1 __first1, InputIterator1 __last1, InputIterator2 __first2, OutputIterator __result)
Computes the pointwise division of two ranges.
slip::RegularVector3dField3d< unsigned short, double > RegularVector3dField3d_us
unsigned long alias
slip::RegularVector3dField3d< unsigned long, double > RegularVector3dField3d_ul
unsigned long alias
static const std::size_t DIM
vector3d_value_type & vector3d_reference
const_iterator begin() const
Returns a read-only (constant) iterator that points to the first element in the Matrix3d. Iteration is done in ordinary element order.
slip::RegularVector3dField3d< unsigned char, double > RegularVector3dField3d_uc
unsigned char alias
Provides some derivative algorithms and derivative functors.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Point3d< GridT > &init_point, const slip::Point3d< GridT > &grid_step, InputIterator first1, InputIterator last1, InputIterator first2, InputIterator first3)
Contructs a RegularVector3dField3d from a 3 ranges.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Point3d< GridT > &init_point, const slip::Point3d< GridT > &grid_step, InputIterator first, InputIterator last)
Contructs a RegularVector3dField3d from a range.
size_type slices() const
Returns the number of slices (first dimension size) in the GenericMultiComponent3d.
Provides a class to iterate a 1d range according to a constant step.
const GridT x2(const size_type k, const size_type i, const size_type j) const
Subscript access to the real x2 value of the indexed (k,i,j) point of the RegularVector3dField3d.
reverse_slice_iterator slice_rbegin(const size_type row, const size_type col)
Returns a read/write iterator that points to the last element of the line (row,col) threw the slices ...
std::reverse_iterator< col_iterator > reverse_col_iterator
void set_grid_step(const slip::Point3d< GridT > &grid_step)
Write access to the grid step of the grid.
Provides a class to manipulate iterator3d within a slip::Range. It is used to iterate throw 3d contai...
const_pointer const_row_iterator
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols)
Constructs a RegularVector3dField3d.
std::reverse_iterator< const_col_iterator > const_reverse_col_iterator
reverse_col_iterator col_rbegin(const size_type slice, const size_type col)
Returns a read/write reverse iterator that points to the last element of the column column of the sli...
void front_upper_left(Point< CoordType, 3 >)
Accessor/Mutator of the front_upper_left point (p1) of Box3d.
row_iterator row_begin(const size_type slice, const size_type row)
Returns a read/write iterator that points to the first element of the row row of the slice slice in t...
void hermitian_eigen(const Matrix1 &A, Vector1 &EigenValues, Matrix2 &EigenVectors)
Eigen Values Computation of an hermitian semi-definite positive matrix.
const RegularVector3dField3d< T, GridT > const_self
const slip::Point3d< GridT > & get_grid_step() const
Read access to the init point of the grid.
row_iterator row_end(const size_type slice, const size_type row)
Returns a read/write iterator that points to the past-the-end element of the row row of the slice sli...
iterator begin()
Returns a read/write iterator that points to the first element in the kvector. Iteration is done in o...
void norm(Container3D &result) const
Computes Eucliean norm of each element in the field and write it to a Container3D.
Provides some tecplot binary input/ouput algorithms.
void lambda(const std::size_t sch_order, Container3D &Lambda, Container3D1 &LambdaV1, Container3D2 &LambdaV2, Container3D3 &LambdaV3) const
Computes finite differences lambda of a RegularVector3dField3d.
const slip::Point3d< GridT > & get_init_point() const
Read access to the init point of the grid.
void write_tecplot_bin(const std::string &file_path_name, const std::string &title, const std::string &zone) const
Writes a RegularVector3dField3d to a tecplot binary file.
void read_tecplot_bin(const std::string &file_path_name, const int zone_loaded=1)
Reads a RegularVector3dField3d from a binary tecplot file.
slip::GenericMultiComponent3d< slip::Vector3d< T > >::const_iterator2d const_iterator3d
This is a GenericMultiComponent3d class. This container statisfies the BidirectionnalContainer concep...
Numerical matrix3d class. This container statisfies the RandomAccessContainer concepts of the STL exc...
void plus(InputIterator1 __first1, InputIterator1 __last1, InputIterator2 __first2, OutputIterator __result)
Computes the addition of two ranges.
void multiplies(InputIterator1 __first1, InputIterator1 __last1, InputIterator2 __first2, OutputIterator __result)
Computes the pointwise product of two ranges.
T & Vx3(const size_type k, const size_type i, const size_type j)
Subscript access to third element of the data contained in the RegularVector3dField3d.
Provides some algorithms to computes eigenvalues and eigenvectors.
slip::RegularVector3dField3d< short, double > RegularVector3dField3d_s
short alias
Provides a class to manipulate 3d Vector.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Point3d< GridT > &init_point, const slip::Point3d< GridT > &grid_step, const T *val)
Constructs a RegularVector3dField3d initialized by an array val.
reverse_col_iterator col_rend(const size_type slice, const size_type col)
Returns a read/write reverse iterator that points to the first element of the column column of the sl...
RegularVector3dField3d< double, double > Regular3D3C_d
double alias
const value_type & const_reference
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, InputIterator first1, InputIterator last1, InputIterator first2, InputIterator first3)
Contructs a RegularVector3dField3d from a 3 ranges.
Provides a class to manipulate iterator2d within a slip::Box3d. It is used to iterate throw 3d contai...
RegularVector3dField3d< float, double > Regular3D3Cf
float alias
Numerical Vector class. This container statisfies the RandomAccessContainer concepts of the Standard ...
T & u(const size_type k, const size_type i, const size_type j)
Subscript access to first element of the data contained in the RegularVector3dField3d.
const GridT z(const size_type k, const size_type i, const size_type j) const
Subscript access to the real x3 value of the indexed (k,i,j) point of the RegularVector3dField3d.
slip::RegularVector3dField3d< int, double > RegularVector3dField3d_i
int alias
void divergence(const std::size_t sch_order, Container3D &result) const
Computes finite differences divergence of a RegularVector3dField3d.
const std::string GRID_STEP_ERROR
self & operator*=(const T &val)
void plt_to_RegularVector3dField3d(const std::string &file_path_name, RegularVector3dField3d ®, std::string &title, std::string &zonename, std::vector< std::string > &varnames, const int zone_loaded=1)
Read a slip::RegularVector3dField3d from a binary tecplot file.
const GridT x1(const size_type k, const size_type i, const size_type j) const
Subscript access to the real x1 value of the indexed (k,i,j) point of the RegularVector3dField3d.
const_pointer const_iterator
const std::string GRID_INIT_POINT_ERROR
vector3d_value_type * vector3d_pointer
void RegularVector3dField3d_to_plt(const std::string &file_path_name, RegularVector3dField3d ®, std::string title, std::string zone, const double SolTime, std::vector< std::string > varnames=std::vector< std::string >(), const int FileType=0)
Write a slip::RegularVector3dField3d to a binary tecplot file.
CoordType depth() const
compute the depth of the Box3d.
self & operator/=(const T &val)
T & Vx1(const size_type k, const size_type i, const size_type j)
Subscript access to first element of the data contained in the RegularVector3dField3d.
void matrix_matrix_multiplies(MatrixIterator1 M1_up, MatrixIterator1 M1_bot, MatrixIterator2 M2_up, MatrixIterator2 M2_bot, MatrixIterator3 R_up, MatrixIterator3 R_bot)
Computes the matrix matrix multiplication of 2 2d ranges.
slip::stride_iterator< pointer > col_iterator
Numerical matrix class. This container statisfies the BidirectionnalContainer concepts of the STL...
GenericMultiComponent3d< slip::Vector3d< T > > base
Provides some algorithms to computes arithmetical operations on ranges.
slip::RegularVector3dField3d< unsigned int, double > RegularVector3dField3d_ui
unsigned int alias
slip::Vector3d< T > value_type
void derivative(const std::size_t component, const slip::SPATIAL_DIRECTION der_dir, const std::size_t der_order, const std::size_t sch_order, Container3D &result) const
Computes finite differences derivatives of a RegularVector3dField3d.
Provides a class to manipulate Matrix3d.
std::ostream & operator<<(std::ostream &out, const Array< T > &a)
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const T *val)
Constructs a RegularVector3dField3d initialized by an array val.
void fill(const slip::Vector3d< T > &value)
Fills the container range [begin(),begin()+size()) with copies of value.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, InputIterator first, InputIterator last)
Contructs a RegularVector3dField3d from a range.
self & operator=(const slip::Vector3d< T > &val)
Affects all the element of the RegularVector3dField3d by val.
void back_bottom_right(Point< CoordType, 3 >)
Accessor/Mutator of the back_bottom_right point (p2) of Box3d.
reverse_slice_iterator slice_rend(const size_type row, const size_type col)
Returns a read/write iterator that points to the one before the first element of the line (row...
slip::stride_iterator< const_pointer > const_col_iterator
const vector3d_value_type const_vector3d_reference
void set_init_point(const slip::Point3d< GridT > &init_point)
Write access to the init point of the grid.
iterator end()
Returns a read/write iterator that points one past the last element in the GenericMultiComponent3d. Iteration is done in ordinary element order.
norm_type norm(const size_type k, const size_type i, const size_type j) const
Subscript access to a local norm contained in the RegularVector3dField3d.
SPATIAL_DIRECTION
Choose between different spatial directions.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Vector3d< T > *val)
Constructs a RegularVector3dField3d initialized by an array val.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Vector3d< T > &val)
Constructs a RegularVector3dField3d initialized by the scalar value val.
This is a Regular Vector3d Field. This container statisfies the BidirectionnalContainer concepts of t...
Provides some algorithms to apply C like functions to ranges.
void lambda(const std::size_t sch_order, Container3D &Lambda) const
Computes finite differences lambda of a RegularVector3dField3d.
const GridT x3(const size_type k, const size_type i, const size_type j) const
Subscript access to the real x3 value of the indexed (k,i,j) point of the RegularVector3dField3d.
std::reverse_iterator< const_iterator > const_reverse_row_iterator
void vorticity(const std::size_t sch_order, Container3D &result) const
Computes finite differences vorticity of a RegularVector3dField3d.
Provides a class to iterate a 1d range according to a step.
std::string name() const
Returns the name of the class.
slip::GenericMultiComponent3d< slip::Vector3d< T > >::iterator3d iterator3d
const vector3d_value_type * const_vector3d_pointer
T & v(const size_type k, const size_type i, const size_type j)
Subscript access to second element of the data contained in the RegularVector3dField3d.
T & w(const size_type k, const size_type i, const size_type j)
Subscript access to third element of the data contained in the RegularVector3dField3d.
void derivative(SrcIter first, SrcIter last, const std::size_t der_ord, const std::size_t sch_ord, const std::size_t sch_shift, const Container2D &M, ResIter result)
Computes 1d finite differences derivatives of an iterator range.
~RegularVector3dField3d()
Destructor of the RegularVector3dField3d.
reverse_slice_iterator slice_rbegin(const size_type row, const size_type col)
Returns a read/write iterator that points to the last element of the line (row,col) threw the slices ...
void finite_diff_kernels(const std::size_t der_ord, const std::size_t sch_ord, const std::size_t sch_shift, std::vector< KernelsIterator > &kernels_first)
Computes finite differences kernels for derivation based on Taylor series (sch_ord-sch_shift steps up...
slip::kstride_iterator< vector3d_pointer, 3 > vector3d_iterator
const value_type * const_pointer
slip::RegularVector3dField3d< long, double > RegularVector3dField3d_l
long alias
std::reverse_iterator< iterator > reverse_row_iterator
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Point3d< GridT > &init_point, const slip::Point3d< GridT > &grid_step, const slip::Vector3d< T > &val)
Constructs a RegularVector3dField3d initialized by the scalar value val.
row_iterator row_begin(const size_type row)
Returns a read/write iterator that points to the first element of the row row in the Matrix...
friend class boost::serialization::access
RegularVector3dField3d()
Constructs a RegularVector3dField3d.
Color< T > operator*(const Color< T > &V1, const Color< T > &V2)
iterator end()
Returns a read/write iterator that points one past the last element in the Matrix3d. Iteration is done in ordinary element order.
CoordType height() const
compute the height of the Box3d.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Point3d< GridT > &init_point, const slip::Point3d< GridT > &grid_step)
Constructs a RegularVector3dField3d.
std::reverse_iterator< iterator > reverse_iterator
Color< T > operator/(const Color< T > &V1, const Color< T > &V2)
size_type cols() const
Returns the number of columns (third dimension size) in the GenericMultiComponent3d.
RegularVector3dField3d(const self &rhs)
Constructs a copy of the RegularVector3dField3d rhs.
This is a point3d class, a specialized version of Point<CoordType,DIM> with DIM = 3...
void derivative(const std::size_t component, const slip::SPATIAL_DIRECTION der_dir, const std::size_t der_order, const std::size_t sch_order, const slip::Box3d< int > box, Container3D &result) const
Computes finite differences derivatives of a RegularVector3dField3d in a box.
slip::RegularVector3dField3d< char, double > RegularVector3dField3d_c
char alias
Color< T > operator-(const Color< T > &V1, const Color< T > &V2)
size_type dim1() const
Returns the number of slices (first dimension size) in the GenericMultiComponent3d.
RegularVector3dField3d(const size_type slices, const size_type rows, const size_type cols, const slip::Point3d< GridT > &init_point, const slip::Point3d< GridT > &grid_step, const slip::Vector3d< T > *val)
Constructs a RegularVector3dField3d initialized by an array val.
Provides a class to manipulate multicomponent 3d containers.
slip::lin_alg_traits< value_type >::value_type norm_type
This is some iterator to iterate a 3d container into a Box area defined by the subscripts of the 3d c...