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

Diff.cc: changed to Field_t

parent bf545b08
No related branches found
No related tags found
No related merge requests found
......@@ -59,30 +59,31 @@ diff_kernel(bool hasMissvals, const double v1, const double v2, const double mis
relm = 1.0;
}
}
/*
static void
diff_kernel(size_t i, bool hasMissvals, const Field_t &field1, const Field_t &field2, size_t &ndiff, bool &dsgn, bool &zero,
double &absm, double &relm)
diff(size_t gridsize, bool hasMissvals, const Field_t &field1, const Field_t &field2, size_t &ndiff, bool &dsgn, bool &zero,
double &absm, double &relm)
{
if (memtype_is_float_float(field1.memType, field2.memType))
diff_kernel(hasMissvals, field1.vec_f[i], field2.vec_f[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
else if (memtype_is_float_double(field1.memType, field2.memType))
diff_kernel(hasMissvals, field1.vec_f[i], field2.vec_d[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
else if (memtype_is_double_float(field1.memType, field2.memType))
diff_kernel(hasMissvals, field1.vec_d[i], field2.vec_f[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
else
diff_kernel(hasMissvals, field1.vec_d[i], field2.vec_d[i], field1.missval, field2.missval, ndiff, dsgn, zero, absm, relm);
auto func = [&](const LambdaField_T_ _field1, const LambdaField_T_ _field2)
{
for (size_t i = 0; i < gridsize; ++i)
diff_kernel(hasMissvals, _field1.vec[i], _field2.vec[i], _field1.missval, _field2.missval, ndiff, dsgn, zero, absm, relm);
};
field_operation2DiffType(func, field1, field2);
}
static void
use_real_part(const size_t gridsize, Field_t &field)
use_real_part(size_t gridsize, Field_t &field)
{
if (field.memType == MemType::Float)
for (size_t i = 0; i < gridsize; ++i) field.vec_f[i] = field.vec_f[i * 2];
else
for (size_t i = 0; i < gridsize; ++i) field.vec_d[i] = field.vec_d[i * 2];
auto func = [=](LambdaField_T_ _field)
{
for (size_t i = 0; i < gridsize; ++i) _field.vec[i] = _field.vec[i * 2];
};
field_operation(func, field);
}
*/
static void
diff_get_parameter(double &abslim, double &abslim2, double &rellim, int &mapflag, int &maxcount)
{
......@@ -124,7 +125,6 @@ diff_get_parameter(double &abslim, double &abslim2, double &rellim, int &mapflag
void *
Diff(void *process)
{
/*
auto printHeader = true;
int varID1, varID2 = -1;
int levelID;
......@@ -238,15 +238,12 @@ Diff(void *process)
cdo_read_record(streamID2, field2);
if (varList2[varID2].nwpv == CDI_COMP) use_real_part(gridsize, field2);
const auto hasMissvals = (field1.nmiss || field2.nmiss);
const auto hasMissvals = (field1.getNumMiss() || field2.getNumMiss());
size_t ndiff = 0;
auto dsgn = false, zero = false;
double absm = 0.0, relm = 0.0;
for (size_t i = 0; i < gridsize; ++i)
{
diff_kernel(i, hasMissvals, field1, field2, ndiff, dsgn, zero, absm, relm);
}
diff(gridsize, hasMissvals, field1, field2, ndiff, dsgn, zero, absm, relm);
if (!Options::silentMode || Options::cdoVerbose)
{
......@@ -278,7 +275,7 @@ Diff(void *process)
reset_text_color(stdout);
set_text_color(stdout, GREEN);
fprintf(stdout, "%7g ", cdo_zaxis_inq_level(varList1[varID1].zaxisID, levelID));
fprintf(stdout, "%8zu %7zu ", gridsize, std::max(field1.nmiss, field2.nmiss));
fprintf(stdout, "%8zu %7zu ", gridsize, std::max(field1.getNumMiss(), field2.getNumMiss()));
fprintf(stdout, "%7zu ", ndiff);
reset_text_color(stdout);
......@@ -338,7 +335,6 @@ Diff(void *process)
cdo_stream_close(streamID2);
cdo_finish();
*/
return nullptr;
}
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