Skip to content
Snippets Groups Projects
Commit 503c9da1 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

remap_stat(): remove pragma omp simd -> wrong result with clang

parent 205c4b50
No related branches found
No related tags found
1 merge request!82M214003/develop
......@@ -75,8 +75,8 @@ remap_check_mask_indices(const size_t (&indices)[4], const Varray<short> &mask)
int searchResult = 1;
if (mask.size() > 0)
{
for (int n = 0; n < 4; ++n)
if (mask[indices[n]] == 0) searchResult = 0;
for (int i = 0; i < 4; ++i)
if (mask[indices[i]] == 0) searchResult = 0;
}
return searchResult;
}
......@@ -856,21 +856,14 @@ remap_stat(int remapOrder, RemapGrid &srcGrid, RemapGrid &tgtGrid, RemapVars &rv
{
cdo_print(" Conservation:");
double sum = 0.0;
for (size_t n = 0; n < srcGrid.size; ++n)
if (!dbl_is_equal(array1[n], mv1)) sum += array1[n] * srcGrid.cell_area[n] * srcGrid.cell_frac[n];
for (size_t i = 0; i < srcGrid.size; ++i)
if (!dbl_is_equal(array1[i], mv1)) sum += array1[i] * srcGrid.cell_area[i] * srcGrid.cell_frac[i];
cdo_print(" Grid1 Integral = %g", sum);
sum = 0;
for (size_t n = 0; n < tgtGrid.size; ++n)
if (!dbl_is_equal(array2[n], mv2)) sum += array2[n] * tgtGrid.cell_area[n] * tgtGrid.cell_frac[n];
for (size_t i = 0; i < tgtGrid.size; ++i)
if (!dbl_is_equal(array2[i], mv2)) sum += array2[i] * tgtGrid.cell_area[i] * tgtGrid.cell_frac[i];
cdo_print(" Grid2 Integral = %g", sum);
/*
for ( n = 0; n < srcGrid.size; n++ )
fprintf(stderr, "1 %d %g %g %g\n", n, array1[n], srcGrid.cell_area[n],
srcGrid.cell_frac[n]); for ( n = 0; n < tgtGrid.size; n++ )
fprintf(stderr, "2 %d %g %g %g\n", n, array2[n], tgtGrid.cell_area[n],
tgtGrid.cell_frac[n]);
*/
}
cdo_print(" Number of weights %zu", rv.num_wts);
......@@ -880,18 +873,18 @@ remap_stat(int remapOrder, RemapGrid &srcGrid, RemapGrid &tgtGrid, RemapVars &rv
std::vector<size_t> tgt_count(tgtGrid.size, 0);
#ifdef HAVE_OPENMP4
#pragma omp simd
//#pragma omp simd -> wrong result with clang
#endif
for (size_t n = 0; n < rv.numLinks; ++n) tgt_count[rv.tgtCellIndices[n]]++;
for (size_t i = 0; i < rv.numLinks; ++i) tgt_count[rv.tgtCellIndices[i]]++;
size_t imin = SIZE_MAX;
size_t imax = 0;
for (size_t n = 0; n < tgtGrid.size; ++n)
for (size_t i = 0; i < tgtGrid.size; ++i)
{
if (tgt_count[n] > 0)
if (tgt_count[i] > 0)
{
if (tgt_count[n] < imin) imin = tgt_count[n];
if (tgt_count[n] > imax) imax = tgt_count[n];
imin = std::min(imin, tgt_count[i]);
imax = std::max(imax, tgt_count[i]);
}
}
......@@ -1131,8 +1124,8 @@ remap_gradients(RemapGrid &grid, const Field &field, RemapGradients &gradients)
void
remap_check_area(size_t gridSize, const Varray<double> &cell_area, const char *name)
{
for (size_t n = 0; n < gridSize; ++n)
for (size_t i = 0; i < gridSize; ++i)
{
if (cell_area[n] < -0.01) cdo_print("%s grid area error: %zu %g", name, n, cell_area[n]);
if (cell_area[i] < -0.01) cdo_print("%s grid area error: %zu %g", name, i, cell_area[i]);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment