diff --git a/extensions/BackgroundMesh.cc b/extensions/BackgroundMesh.cc index 3c0e24c9470c824a6528ddce310354951dd3930c..5d425296b2483afb7152adb93b19d1bb3b17cb70 100644 --- a/extensions/BackgroundMesh.cc +++ b/extensions/BackgroundMesh.cc @@ -2,6 +2,8 @@ #include "VectorOperations.h" // getMin, sort, CompairPair #include "Initfile.h" +#include <boost/math/special_functions/round.hpp> + namespace experimental { std::map<const FiniteElemSpace*, std::pair<int, Box*> > Box::boxMap; @@ -66,7 +68,7 @@ namespace experimental { bool Box::inBox(const PointType& x) { - for (size_t i = 0; i < DOW; i++) + for (int i = 0; i < DOW; i++) if (min_corner[i] > x[i] || max_corner[i] < x[i]) return false; return true; @@ -85,7 +87,7 @@ namespace experimental { int Box::getBox(const PointType& x) { std::vector<int> idx(DOW); - for (size_t i = 0; i < DOW; i++) + for (int i = 0; i < DOW; i++) idx[i] = static_cast<int>((x[i]-min_corner[i])*N[i]/(max_corner[i]-min_corner[i])); // idx[i] = static_cast<int>(floor((x[i]-min_corner[i])*N[i]/(max_corner[i]-min_corner[i]))); return idx2nr(idx); @@ -131,7 +133,7 @@ namespace experimental { std::vector<double> distances; std::set<int>::iterator nrIter; int level = 0; - for (int level = 0; data.size() < nData && nrs.size() > 0; level++) { + for (int level = 0; static_cast<int>(data.size()) < nData && nrs.size() > 0; level++) { int oldDataSize = data.size(); for (nrIter = nrs.begin(); nrIter != nrs.end(); nrIter++) { data.insert(data.end(), boxData[*nrIter].begin(), boxData[*nrIter].end()); @@ -140,8 +142,8 @@ namespace experimental { if (addon > 0) { // 1.) bestimme Abstand zu x int n = distances.size(); - TEST_EXIT(n + addon == data.size() && oldDataSize == n)("hier ist ein Index falsch: distances.size = %d, addon = %d, data.size = %d, oldDataSize = %d!\n",n,addon,data.size(),oldDataSize); - for (size_t i = 0; i < addon; i++) { + TEST_EXIT(n + addon ==static_cast<int>(data.size()) && oldDataSize == n)("hier ist ein Index falsch: distances.size = %d, addon = %d, data.size = %d, oldDataSize = %d!\n",n,addon,data.size(),oldDataSize); + for (int i = 0; i < addon; i++) { distances.push_back(distance2(x, data[n+i].second, DOW)); } // 2.) sortiere Paare aus dist und data @@ -150,7 +152,7 @@ namespace experimental { } // 3.) wenn noch nicht genügend Punkte, dann umgebende Boxen mit durchsuchen - if (data.size() < nData + if (static_cast<int>(data.size()) < nData || (level == 0 && distances[distances.size()-1] > boxBoundaryDist)) { getSurroundingBoxes(center_box, level+1, nrs); @@ -189,7 +191,7 @@ namespace experimental { std::vector<int> N_; int N_sum = 0; for (int i = 0; i < Global::getGeo(WORLD); i++) { - N_.push_back(static_cast<int>(round(pow(static_cast<double>(N_const),lengths[i]/sum_lengths)))); + N_.push_back(boost::math::iround(pow(static_cast<double>(N_const),lengths[i]/sum_lengths))); N_sum += N_[i]; } @@ -218,7 +220,7 @@ namespace experimental { void Box::init() { int maxNr = 1; - for (size_t i = 0; i < DOW; i++) + for (int i = 0; i < DOW; i++) maxNr *= N[i]; boxData.resize(maxNr); @@ -287,8 +289,8 @@ namespace experimental { break; case 2: for (double phi = 0.0; phi < 2.0*m_pi; phi += incr) { - newIdx[0] = idx[0] + static_cast<int>(round(radius*cos(phi))); - newIdx[1] = idx[1] + static_cast<int>(round(radius*sin(phi))); + newIdx[0] = idx[0] + boost::math::iround(radius*cos(phi)); + newIdx[1] = idx[1] + boost::math::iround(radius*sin(phi)); if (newIdx[0] >= 0 && newIdx[0] < N[0] && newIdx[1] >= 0 && newIdx[1] < N[1]) newNrs.insert(idx2nr(newIdx)); @@ -297,9 +299,9 @@ namespace experimental { case 3: for (double phi = -m_pi; phi < m_pi; phi += incr) { for (double theta = 0.0; theta < m_pi; theta += incr) { - newIdx[0] = idx[0] + static_cast<int>(round(radius*sin(theta)*cos(phi))); - newIdx[1] = idx[1] + static_cast<int>(round(radius*sin(theta)*sin(phi))); - newIdx[2] = idx[2] + static_cast<int>(round(radius*cos(theta))); + newIdx[0] = idx[0] + boost::math::iround(radius*sin(theta)*cos(phi)); + newIdx[1] = idx[1] + boost::math::iround(radius*sin(theta)*sin(phi)); + newIdx[2] = idx[2] + boost::math::iround(radius*cos(theta)); if (newIdx[0] >= 0 && newIdx[0] < N[0] && newIdx[1] >= 0 && newIdx[1] < N[1] && newIdx[2] >= 0 && newIdx[2] < N[2]) @@ -323,7 +325,7 @@ namespace experimental { std::vector<int> idx; nr2idx(nr, idx); // --> idx - for (size_t i = 0; i < DOW; i++) { + for (int i = 0; i < DOW; i++) { std::vector<int> idx_i = idx; idx_i[i] = std::min(N[i]-1, idx_i[i]+1); surrounding_nrs.insert(idx2nr(idx_i)); @@ -351,7 +353,7 @@ namespace experimental { std::vector<int> idx; nr2idx(nr, idx); PointType min_c, max_c; - for (size_t i = 0; i < DOW; i++) { + for (int i = 0; i < DOW; i++) { min_c[i] = min_corner[i] + (max_corner[i]-min_corner[i])*idx[i]/N[i]; max_c[i] = min_corner[i] + (max_corner[i]-min_corner[i])*(idx[i]+1)/N[i]; } @@ -365,7 +367,7 @@ namespace experimental { void Box::addData(PointType x, DataType data) { int nr = getBox(x); - if (nr < 0 || nr >= boxData.size()) + if (nr < 0 || nr >= static_cast<int>(boxData.size())) throw(std::runtime_error("box-nr out of range: nr = "+boost::lexical_cast<std::string>(nr)+", x = "+boost::lexical_cast<std::string>(x)+", boxSize = "+boost::lexical_cast<std::string>(boxData.size()))); boxData[nr].push_back(data); } diff --git a/extensions/GeometryTools.cc b/extensions/GeometryTools.cc index 3072b11edd67dda184a28d62226d2440b8d70399..933fac12075cf922091f6ef8a4e19db8401250f5 100644 --- a/extensions/GeometryTools.cc +++ b/extensions/GeometryTools.cc @@ -412,7 +412,7 @@ double distance_point_triangle_2d(double point[], double tri0[], double tri1[], bool point_in_polygon(double point[], const std::vector<AMDiS::WorldVector<double> > &vertices) { bool inside = false; - int i, j; + size_t i, j; for (i = 0, j = vertices.size()-1; i < vertices.size(); j = i++) { if ((((vertices[i][1] <= point[1]) && (point[1] < vertices[j][1])) || ((vertices[j][1] <= point[1]) && (point[1] < vertices[i][1]))) && diff --git a/extensions/Helpers.cc b/extensions/Helpers.cc index 47f925c0f84bcb565edd24eaae87d5954a27b0cb..54fb629cd60755a3e51d288d6a9c38c38b21385d 100644 --- a/extensions/Helpers.cc +++ b/extensions/Helpers.cc @@ -258,7 +258,7 @@ void getNormals(FiniteElemSpace *feSpace, DOFVector<WorldVector<double> > *norma Mesh *mesh = feSpace->getMesh(); const BasisFunction *basisFcts = feSpace->getBasisFcts(); - int nBasisFcts = basisFcts->getNumber(); + size_t nBasisFcts = basisFcts->getNumber(); std::vector<DegreeOfFreedom> localIndices(nBasisFcts); DOFVector<std::set<DegreeOfFreedom> > neighbors(feSpace, "neighbors"); @@ -295,11 +295,11 @@ void getNormals(FiniteElemSpace *feSpace, DOFVector<WorldVector<double> > *norma DOFIterator<std::set<DegreeOfFreedom> > neighborsIter(&neighbors, USED_DOFS); neighborsIter.reset(); for (; !neighborsIter.end(); neighborsIter++, normalsIter++, coordsIter++/*, grdIter++*/) { - int numPoints = 10; // 6 oder 10 + size_t numPoints = 10; // 6 oder 10 std::set<DegreeOfFreedom> idx = *neighborsIter; std::set<DegreeOfFreedom>::iterator it, it2; - for (int i = 1; i<3 && idx.size() < numPoints; i++) { + for (size_t i = 1; i<3 && idx.size() < numPoints; i++) { for (it = idx.begin(); it != idx.end() && idx.size() < numPoints; it++) { for (it2 = (neighbors[*it]).begin(); it2 != (neighbors[*it]).end() && idx.size() < numPoints; it2++) { idx.insert(*it2); @@ -400,41 +400,6 @@ void getCurvature(DOFVector<WorldVector<double> >* normals,DOFVector<double>* cu } } -void process_mem_usage(double& vm_usage, double& resident_set) -{ - using std::ios_base; - using std::ifstream; - using std::string; - - vm_usage = 0.0; - resident_set = 0.0; - - // 'file' stat seems to give the most reliable results - // - ifstream stat_stream("/proc/self/stat",ios_base::in); - - // dummy vars for leading entries in stat that we don't care about - // - string pid, comm, state, ppid, pgrp, session, tty_nr; - string tpgid, flags, minflt, cminflt, majflt, cmajflt; - string utime, stime, cutime, cstime, priority, nice; - string O, itrealvalue, starttime; - - // the two fields we want - // - unsigned long vsize; - long rss; - - stat_stream >> pid >> comm >> state >> ppid >> pgrp >> session >> tty_nr - >> tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt - >> utime >> stime >> cutime >> cstime >> priority >> nice - >> O >> itrealvalue >> starttime >> vsize >> rss; // don't care about the rest - - long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; // in case x86-64 is configured to use 2MB pages - vm_usage = vsize / 1024.0; - resident_set = rss * page_size_kb; -} - // plots a vector with ascii-code void plot(std::vector<double> &values, int numRows, int numCols, std::string symbol) {