예제 #1
0
파일: linear.hpp 프로젝트: Titan-C/triqs
 // -------------- HDF5  --------------------------
 /// Write into HDF5
 friend void h5_write(h5::group fg, std::string subgroup_name, linear_mesh const &m) {
  h5::group gr = fg.create_group(subgroup_name);
  h5_write(gr, "domain", m.domain());
  h5_write(gr, "min", m.xmin);
  h5_write(gr, "max", m.xmax);
  h5_write(gr, "size", long(m.size()));
 }
예제 #2
0
파일: linear.hpp 프로젝트: krivenko/triqs
 /// Approximation of a point of the domain by a mesh point
 template <typename D> std::tuple<bool, long, double> windowing(linear_mesh<D> const &mesh, typename D::point_t const &x) {
  double a = (x - mesh.x_min()) / mesh.delta();
  long i = std::floor(a), imax = long(mesh.size()) - 1;
  bool in = (i >= 0) && (i < imax);
  double w = a - i;
  if (i == imax) {
   --i;
   in = (std::abs(w) < 1.e-12);
   w = 1.0;
  }
  if (i == -1) {
   i = 0;
   in = (std::abs(1 - w) < 1.e-12);
   w = 1.0;
  }
  return std::make_tuple(in, i, w);
  // return std::make_tuple(in, (in ? i : 0),w);
 }
예제 #3
0
파일: linear.hpp 프로젝트: Titan-C/triqs
 /// Mesh comparison
 bool operator==(linear_mesh const &M) const {
  return ((_dom == M._dom) && (size() == M.size()) && (std::abs(xmin - M.xmin) < 1.e-15) && (std::abs(xmax - M.xmax) < 1.e-15));
 }