114 const int &numberOfIterations)
const {
118#ifndef TTK_ENABLE_KAMIKAZE
129 SimplexId const vertexNumber = triangulation->getNumberOfVertices();
136#ifdef TTK_ENABLE_OPENMP
137#pragma omp parallel for num_threads(threadNumber_)
139 for(
SimplexId i = 0; i < vertexNumber; i++) {
146 printMsg(
"Smoothing " + std::to_string(vertexNumber) +
" vertices", 0, 0,
149 int timeBuckets = 10;
150 if(numberOfIterations < timeBuckets)
151 timeBuckets = numberOfIterations;
153 for(
int it = 0; it < numberOfIterations; it++) {
154#ifdef TTK_ENABLE_OPENMP
155#pragma omp parallel for num_threads(threadNumber_)
157 for(
SimplexId i = 0; i < vertexNumber; i++) {
165 tmpData[curr] = outputData[curr];
167 const auto neighborNumber = triangulation->getVertexNeighborNumber(i);
168 for(
SimplexId k = 0; k < neighborNumber; k++) {
170 triangulation->getVertexNeighbor(i, k, neighborId);
173 tmpData[curr] /=
static_cast<double>(neighborNumber + 1);
177 if(numberOfIterations) {
179#ifdef TTK_ENABLE_OPENMP
180#pragma omp parallel for num_threads(threadNumber_)
182 for(
SimplexId i = 0; i < vertexNumber; i++) {
193 if(ttk::isRunningWithMPI()) {
196 exchangeGhostVertices<dataType, triangulationType>(
202 if(!(it % ((numberOfIterations) / timeBuckets))) {
203 printMsg(
"Smoothing " + std::to_string(vertexNumber) +
" vertices",
210 printMsg(
"Smoothed " + std::to_string(vertexNumber) +
" vertices", 1,
printMsg(debug::output::BOLD+" | | | | | . \\ | | (__| | / __/| |_| / __/| (_) |"+debug::output::ENDCOLOR, debug::Priority::PERFORMANCE, debug::LineMode::NEW, stream)