index_t
 reshape( Indices const& a_sizes)
 {
     index_t const rankp1=a_sizes.size()+1;
     my_strides.resize(rankp1);
     return init_strides( a_sizes);
 }
 explicit GridSpec(
     const ndarray<real_t, 2> position,
     const real_t scale) :
     n_dim_  (n_dim),
     scale	(scale),
     box		(init_box(position)),
     shape	(init_shape()),
     zeros   (init_zeros()),
     strides	(init_strides())
 {
 }
 box_domain( dirs a_dir, Sizes const& a_sizes)
 : my_strides( a_sizes.size()+1)
 , my_dir(a_dir)
 {
     init_strides( a_sizes);
   #if 0
     std::cout<<__FILE__<<":"<<__LINE__
       <<":a_sizes="<<a_sizes
       <<":my_strides="<<my_strides
       <<"\n";
   #endif
 }
 box_domain( dirs a_dir, init_list_t const& a_sizes)
 : my_strides( a_sizes.size()+1)
 , my_dir(a_dir)
 {
     init_strides( a_sizes);
 }