diff --git a/src/Afterburner.cc b/src/Afterburner.cc index 7d22cc24cac66f6eed8815e36a0dc0535395f4f4..6d070c2a15388915f77dd2fb8977ec4f76833c54 100644 --- a/src/Afterburner.cc +++ b/src/Afterburner.cc @@ -1235,9 +1235,9 @@ after_dimcalc(AfterControl &globs) globs.Waves = globs.Truncation + 1; globs.Fouriers = globs.Waves * 2; - globs.DimSP = (globs.Truncation + 1) * (globs.Truncation + 2); - globs.DimFC = globs.Latitudes * globs.Fouriers; - globs.DimGP = globs.Latitudes * globs.Longitudes; + globs.DimSP = ((long) globs.Truncation + 1) * ((long) globs.Truncation + 2); + globs.DimFC = (long) globs.Latitudes * (long) globs.Fouriers; + globs.DimGP = (long) globs.Latitudes * (long) globs.Longitudes; globs.Dim3GP = globs.NumLevel * globs.DimGP; globs.Dim3FC = globs.NumLevel * globs.DimFC; globs.Dim3SP = globs.NumLevel * globs.DimSP; diff --git a/src/Arithdays.cc b/src/Arithdays.cc index 7890cb7972e6fcbf4515af7f94b9ecf51aa514ff..8fdd76030d798dc600d1a63848eb7b2b05d24162 100644 --- a/src/Arithdays.cc +++ b/src/Arithdays.cc @@ -26,22 +26,22 @@ static double dayofyear(int calendar, const CdiDateTime &vDateTime) { - const int month_360[12] = { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }; - const int month_365[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - const int month_366[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + constexpr int month_360[12] = { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }; + constexpr int month_365[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + constexpr int month_366[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int year, month, day; int hour, minute, second, ms; cdiDate_decode(vDateTime.date, &year, &month, &day); cdiTime_decode(vDateTime.time, &hour, &minute, &second, &ms); - const auto dpy = days_per_year(calendar, year); + auto dpy = days_per_year(calendar, year); double doy = 0.0; for (int im = 1; im < month; ++im) { auto dpm = (dpy == 360) ? month_360 : ((dpy == 365) ? month_365 : month_366); - if (im >= 1 && im <= 12) doy += dpm[im - 1]; + if (im <= 12) doy += dpm[im - 1]; } doy += (day - 1); @@ -75,6 +75,7 @@ public: .constraints = { 1, 1, NoRestriction }, }; inline static RegisterEntry<Arithdays> registration = RegisterEntry<Arithdays>(module); + int MULDOY; CdoStreamID streamID1; @@ -130,7 +131,7 @@ public: auto nrecs = cdo_stream_inq_timestep(streamID1, tsID); if (nrecs == 0) break; - const auto vDateTime = taxisInqVdatetime(taxisID1); + auto vDateTime = taxisInqVdatetime(taxisID1); cdo_taxis_copy_timestep(taxisID2, taxisID1); cdo_def_timestep(streamID2, tsID); @@ -148,8 +149,7 @@ public: for (int recID = 0; recID < nrecs; ++recID) { - int varID, levelID; - cdo_inq_record(streamID1, &varID, &levelID); + auto [varID, levelID] = cdo_inq_record(streamID1); field.init(varList1.vars[varID]); cdo_read_record(streamID1, field); diff --git a/src/Cat.cc b/src/Cat.cc index 5c56f027885e5bd7876c76911d7e4a8af408e29a..494ad73fe1d49fe2bdb99f6642c93dd8cb5e0200 100644 --- a/src/Cat.cc +++ b/src/Cat.cc @@ -78,7 +78,6 @@ public: if (indf == 0) { - auto numVars = varList1.numVars(); auto numSteps = varList1.numSteps(); if (numSteps == 1 && varList1.numVaryingVars() == 0) numSteps = 0; @@ -110,6 +109,7 @@ public: if (numSteps == 0 && numFiles > 1) { hasConstVars = false; + auto numVars = varList1.numVars(); for (int varID = 0; varID < numVars; ++varID) vlistDefVarTimetype(vlistID2, varID, TIME_VARYING); } diff --git a/src/Collgrid.cc b/src/Collgrid.cc index 7872096147a1897d7bc792059dfdc0c0e08b5c08..6c3d01c04c198dde4aedd01fea3eab9e7ec556e6 100644 --- a/src/Collgrid.cc +++ b/src/Collgrid.cc @@ -276,7 +276,7 @@ coll_cells_reg2d(const Field &field1, Field &field2, const CollgridInfo &collgri auto offset1 = j * nx; auto offset2 = collgridInfo.offset + j * nlon; - auto func = [&](auto &v1, auto &v2, auto n) { + auto func = [&](const auto &v1, auto &v2, auto n) { for (size_t i = 0; i < nx; ++i) { v2[offset2 + i] = v1[offset1 + i]; } }; field_operation2(func, field1, field2); @@ -286,7 +286,7 @@ coll_cells_reg2d(const Field &field1, Field &field2, const CollgridInfo &collgri static void collect_cells(const Field &field1, Field &field2, const std::vector<long> &cellIndex) { - auto func = [&](auto &v1, auto &v2, auto n) { + auto func = [&](const auto &v1, auto &v2, auto n) { for (size_t i = 0; i < n; ++i) { v2[cellIndex[i]] = v1[i]; } }; field_operation2(func, field1, field2, field1.size); diff --git a/src/Copy.cc b/src/Copy.cc index 373f542e5e2e12989a1a6f9041b668262821c7a4..7cf31ead3bbb3afaafd5c09a59bd1b45305a6710 100644 --- a/src/Copy.cc +++ b/src/Copy.cc @@ -118,13 +118,13 @@ public: taxisID2 = taxisDuplicate(taxisID1); vlistDefTaxis(vlistID2, taxisID2); - auto numVars = varList1.numVars(); auto numSteps = varList1.numSteps(); if (numSteps == 1 && varList1.numVaryingVars() == 0) numSteps = 0; if (numSteps == 0 && numFiles > 1) { hasConstantFields = false; + auto numVars = varList1.numVars(); for (int varID = 0; varID < numVars; ++varID) vlistDefVarTimetype(vlistID2, varID, TIME_VARYING); } } diff --git a/src/DCW_util.cc b/src/DCW_util.cc index 965cdca77fb44547ed9a449720d226e4d8e50870..1818fe69c68764b3c1f175f1c4062048117f73dc 100644 --- a/src/DCW_util.cc +++ b/src/DCW_util.cc @@ -18,7 +18,7 @@ print_polygons(DCW_Lists &dcw_lists, const std::string &codeNames) printf("# Digital Chart of the World\n"); printf("# Region for country:"); - for (auto &code : codeList) printf(" %s", code.c_str()); + for (const auto &code : codeList) printf(" %s", code.c_str()); printf("\n"); codeList = dcw_expand_code_list(dcw_lists, codeList); @@ -38,7 +38,7 @@ public: using Process::Process; inline static CdoModule module = { .name = "DCW_util", - .operators = { { "dcw"} }, + .operators = { { "dcw" } }, .aliases = {}, .mode = EXPOSED, // Module mode: 0:intern 1:extern .number = CDI_REAL, // Allowed number type diff --git a/src/Detrend.cc b/src/Detrend.cc index 66a9bd4af4e45397db0954e7d10b0cdc1d454b3f..b064a2b98d6e4df845f55a76cf0e0691092b4ac6 100644 --- a/src/Detrend.cc +++ b/src/Detrend.cc @@ -156,8 +156,8 @@ public: for (int levelID = 0; levelID < var.nlevels; ++levelID) { auto &field = varsData[varID][levelID]; - auto ¶mA = work[0][varID][levelID]; - auto ¶mB = work[1][varID][levelID]; + const auto ¶mA = work[0][varID][levelID]; + const auto ¶mB = work[1][varID][levelID]; sub_trend(zj, field, paramA, paramB); } } @@ -173,8 +173,7 @@ public: if (var.isConstant) continue; for (int levelID = 0; levelID < var.nlevels; ++levelID) { - auto &field = varsData[varID][levelID]; - calc_trend_sum(work, field, zj, varID, levelID); + calc_trend_sum(work, varsData[varID][levelID], zj, varID, levelID); } } } diff --git a/src/Diff.cc b/src/Diff.cc index a7f855deaa4214da0acf5c9dac899317df0cf53c..e1999ae8cfad8172b7866db65f786ea39d213c93 100644 --- a/src/Diff.cc +++ b/src/Diff.cc @@ -81,14 +81,14 @@ diff(size_t n, const Field &field1, const Field &field2) auto hasMissvals = (field1.numMissVals || field2.numMissVals); if (hasMissvals) { - auto func = [&](auto &v1, auto &v2, double mv1, double mv2) { + auto func = [&](const auto &v1, const auto &v2, double mv1, double mv2) { for (size_t i = 0; i < n; ++i) { diff_kernel_mv(v1[i], v2[i], mv1, mv2, diffParam); } }; field_operation2(func, field1, field2, field1.missval, field2.missval); } else { - auto func = [&](auto &v1, auto &v2) { + auto func = [&](const auto &v1, const auto &v2) { for (size_t i = 0; i < n; ++i) { diff_kernel(v1[i], v2[i], diffParam); } }; field_operation2(func, field1, field2); @@ -133,7 +133,7 @@ diff2(size_t n, const Field &field1, const Field &field2) } else { - auto func = [&](auto &v1, auto &v2) { + auto func = [&](const auto &v1, const auto &v2) { for (size_t i = 0; i < n; ++i) { diff_kernel2(v1[i], v2[i], diffParam); } }; field_operation2(func, field1, field2); diff --git a/src/Distgrid.cc b/src/Distgrid.cc index b7a3de6f282aaf075a26e5a40c4846f17842bd6e..de79c28a76a608405575e31f29f92a6607601e02 100644 --- a/src/Distgrid.cc +++ b/src/Distgrid.cc @@ -311,7 +311,7 @@ dist_cells_reg2d(const Field &field1, Field &field2, const DistgridInfo &distgri auto offset1 = distgridInfo.offset + j * nlon; auto offset2 = j * nx; - auto func = [&](auto &v1, auto &v2) { + auto func = [&](const auto &v1, auto &v2) { for (size_t i = 0; i < nx; ++i) { v2[offset2 + i] = v1[offset1 + i]; } }; field_operation2(func, field1, field2); @@ -324,7 +324,7 @@ dist_cells(const Field &field1, Field &field2, const DistgridInfo &distgridInfo) auto gridsize = distgridInfo.gridsize; const auto &cellIndex = distgridInfo.cellindex; - auto func = [&](auto &v1, auto &v2) { + auto func = [&](const auto &v1, auto &v2) { for (size_t i = 0; i < gridsize; ++i) { v2[i] = v1[cellIndex[i]]; } }; field_operation2(func, field1, field2); @@ -351,7 +351,7 @@ public: CdoStreamID streamID1; std::vector<CdoStreamID> streamIDs; - unsigned long nsplit; + size_t nsplit; std::vector<int> vlistIDs; std::vector<GridInfo1> gridInfo1; @@ -504,7 +504,7 @@ public: auto nrecs = cdo_stream_inq_timestep(streamID1, tsID); if (nrecs == 0) break; - for (auto &streamID : streamIDs) cdo_def_timestep(streamID, tsID); + for (const auto &streamID : streamIDs) cdo_def_timestep(streamID, tsID); for (int recID = 0; recID < nrecs; ++recID) { @@ -544,8 +544,8 @@ public: { cdo_stream_close(streamID1); - for (auto &streamID : streamIDs) cdo_stream_close(streamID); - for (auto &vlistID : vlistIDs) vlistDestroy(vlistID); + for (const auto &streamID : streamIDs) cdo_stream_close(streamID); + for (const auto &vlistID : vlistIDs) vlistDestroy(vlistID); for (int i = 0; i < ngrids; ++i) for (size_t index = 0; index < nsplit; ++index) gridDestroy(distgridInfo[i][index].gridID); diff --git a/src/Echam5ini.cc b/src/Echam5ini.cc index 9af42fd71ce88971fedd3bb9cc0ecc6eeeaccf55..e5b75c2c8148b601676a77e4ef3c0911cd3e96ff 100644 --- a/src/Echam5ini.cc +++ b/src/Echam5ini.cc @@ -57,10 +57,6 @@ struct ATTS int naint; int naflt; int natxt; - char *aintname[1024]; - int *aintentry[1024]; - char *afltname[1024]; - double *afltentry[1024]; char *atxtname[1024]; char *atxtentry[1024]; }; @@ -805,6 +801,7 @@ public: im_e5ml(); } }; + class Echam5ini_export : public Echam5ini { public: diff --git a/src/Ensval.cc b/src/Ensval.cc index 8254041f370f8693c05c90ce555f1e2214d8a566..b196e7055188e2442a746841eec22ffd36732b6c 100644 --- a/src/Ensval.cc +++ b/src/Ensval.cc @@ -448,15 +448,13 @@ public: cdo_abort("This is likely due to missing values"); } - double o = 0, p = 0, g = 0; brs_uncty = obar * (1 - obar); for (int k = 0; k <= nens; ++k) { - - g = brs_g[k]; - o = brs_o[k]; - p = 1.0 - k / (float) nens; + auto g = brs_g[k]; + auto o = brs_o[k]; + auto p = 1.0 - k / (float) nens; // need p = 1 - k/nens here as k=0 if all members forecast // event and k=nens if none does so. diff --git a/src/Exprf.cc b/src/Exprf.cc index ac38e119dfa623978421c76eb5dd97c298d309d5..caa9271b519062fd1e3c29243733b0fcb824bc0c 100644 --- a/src/Exprf.cc +++ b/src/Exprf.cc @@ -87,7 +87,7 @@ replace_all(std::string &inout, const std::string &what, const std::string &with } static std::string -exprs_expand(std::string &exprString, const VarList &varList) +exprs_expand(const std::string &exprString, const VarList &varList) { auto replaceTemplate = false; std::string templateName = "_ALL_"; @@ -109,7 +109,7 @@ exprs_expand(std::string &exprString, const VarList &varList) { std::string exprStringNew{}; auto exprStringArgv = split_with_seperator(exprString, ';'); - for (auto &string : exprStringArgv) + for (const auto &string : exprStringArgv) { if (string.find(templateName) == std::string::npos) { exprStringNew += string + ";"; } else @@ -157,7 +157,7 @@ params_init(std::vector<ParamEntry> ¶ms, const VarList &varList) static void params_delete(const std::vector<ParamEntry> ¶ms) { - for (auto ¶m : params) + for (const auto ¶m : params) { if (param.data) delete[] param.data; } @@ -573,7 +573,7 @@ public: auto coordID = params_get_coord_ID(parseArg, coord, params[varID].gridID); auto gridID = parseArg.coords[coordID].cdiID; auto ngp = parseArg.coords[coordID].size; - auto &cdata = parseArg.coords[coordID].data; + const auto &cdata = parseArg.coords[coordID].data; assert(gridID == params[varID].gridID); assert(!cdata.empty()); @@ -584,7 +584,7 @@ public: auto coordID = params_get_coord_ID(parseArg, coord, params[varID].zaxisID); auto zaxisID = parseArg.coords[coordID].cdiID; auto nlev = parseArg.coords[coordID].size; - auto &cdata = parseArg.coords[coordID].data; + const auto &cdata = parseArg.coords[coordID].data; assert(zaxisID == params[varID].zaxisID); assert(!cdata.empty()); diff --git a/src/Fldstat.cc b/src/Fldstat.cc index 8dcd37d4e3e258b9204fdb955715af2ee717daf2..2736bbc1ca3c236855dff9b721fffd5d4d106b7c 100644 --- a/src/Fldstat.cc +++ b/src/Fldstat.cc @@ -74,7 +74,7 @@ print_location_LL(int operfunc, const CdoVar &var, int levelID, double sglval, c static void print_location_LL(int operfunc, const CdoVar &var, int levelID, double sglval, const Field &field, CdiDateTime vDateTime) { - auto func = [&](auto &v) { print_location_LL(operfunc, var, levelID, sglval, v, vDateTime); }; + auto func = [&](const auto &v) { print_location_LL(operfunc, var, levelID, sglval, v, vDateTime); }; field_operation(func, field); } @@ -101,7 +101,7 @@ field_mul_weights(Varray<T> &v1, const Varray<double> &v2, size_t numMissVals, d static void field_mul_weights(Field &field) { - auto func = [&](auto &v, auto &w, auto numMissVals, double missval) { field_mul_weights(v, w, numMissVals, missval); }; + auto func = [&](auto &v, const auto &w, auto numMissVals, double missval) { field_mul_weights(v, w, numMissVals, missval); }; field_operation(func, field, field.weightv, field.numMissVals, field.missval); } @@ -183,7 +183,7 @@ fldstatGetParameter(bool &useWeights) } static int -get_gridcell_weights(Field &field, bool useWeights, bool doPrintWarning, int ngrids, std::string &varName) +get_gridcell_weights(Field &field, bool useWeights, bool doPrintWarning, int ngrids, const std::string &varName) { auto gridSize = field.size; field.weightv.resize(gridSize); diff --git a/src/Gridsearch.cc b/src/Gridsearch.cc index c642f2030eddb939694b1ed800abeda7ed7187a0..048ecac5110e7f309c24b709d2bb94701034634b 100644 --- a/src/Gridsearch.cc +++ b/src/Gridsearch.cc @@ -160,8 +160,8 @@ cellsearch_delete(cellsearch_type *cellsearch) static long search_cells(cellsearch_type *cellsearch, long tgtCellIndex, long *srchIndices) { - grid_type *srcGrid = cellsearch->srcGrid; - grid_type *tgtGrid = cellsearch->tgtGrid; + const grid_type *srcGrid = cellsearch->srcGrid; + const grid_type *tgtGrid = cellsearch->tgtGrid; const auto &src_cell_bound_box = cellsearch->src_cell_bound_box; float tgt_cell_bound_box[4]; @@ -222,7 +222,7 @@ public: using Process::Process; inline static CdoModule module = { .name = "Gridsearch", - .operators = { { "testpointsearch"}, { "testcellsearch"} }, + .operators = { { "testpointsearch" }, { "testcellsearch" } }, .aliases = {}, .mode = EXPOSED, // Module mode: 0:intern 1:extern .number = CDI_REAL, // Allowed number type diff --git a/src/Healpix.cc b/src/Healpix.cc index 2eb5c206139a7fd3d9f5120c66af320ef3e40e7a..9604b26c2406fc6b86696f630bfe7963d300979c 100644 --- a/src/Healpix.cc +++ b/src/Healpix.cc @@ -110,7 +110,7 @@ static void hp_degrade(const Field &field1, Field &field2, const HealpixParams ¶ms) { auto hasMissvals = (field1.numMissVals > 0); - auto func = [&](auto &v1, auto &v2, auto size, double mv) { degrade(v1, size, v2, hasMissvals, mv, params); }; + auto func = [&](const auto &v1, auto &v2, auto size, double mv) { degrade(v1, size, v2, hasMissvals, mv, params); }; field_operation2(func, field1, field2, field2.gridsize, field1.missval); if (hasMissvals) field_num_mv(field2); } @@ -138,7 +138,7 @@ static void hp_upgrade(const Field &field1, Field &field2, const HealpixParams ¶ms) { auto hasMissvals = (field1.numMissVals > 0); - auto func = [&](auto &v1, auto &v2, auto size, double mv) { upgrade(size, v1, v2, hasMissvals, mv, params); }; + auto func = [&](const auto &v1, auto &v2, auto size, double mv) { upgrade(size, v1, v2, hasMissvals, mv, params); }; field_operation2(func, field1, field2, field1.gridsize, field1.missval); if (hasMissvals) field_num_mv(field2); } diff --git a/src/Importbinary.cc b/src/Importbinary.cc index 00b7e0119d46af445632688cf461cc83ad44d22b..ea78fdaf36f09c5a75ef27b03d7978e5045875c1 100644 --- a/src/Importbinary.cc +++ b/src/Importbinary.cc @@ -123,6 +123,7 @@ public: .constraints = { 1, 1, NoRestriction }, }; inline static RegisterEntry<Importbinary> registration = RegisterEntry<Importbinary>(module); + size_t numMissVals = 0; int told, fnum; int tmin = 0, tmax = 0; @@ -155,7 +156,6 @@ public: void init() override { - operator_check_argc(0); dsets_init(&pfi); @@ -487,6 +487,7 @@ public: } // end of while (1) loop } + void close() override { diff --git a/src/Importcmsaf.cc b/src/Importcmsaf.cc index c4ff23627d8aa2d378d6f1faa2440583a6348774..7c141d56f55cbe7c5452460d3165db3e0b215c86 100644 --- a/src/Importcmsaf.cc +++ b/src/Importcmsaf.cc @@ -145,8 +145,6 @@ defLonLatGrid(int nx, int ny, double c0, double lts, double re) int nrx, nry; double c; double r0, s0; - double r, s; - double xla, phi; get_grid_info(c0, re, &nrx, &nry, &r0, &s0, &c); @@ -161,8 +159,8 @@ defLonLatGrid(int nx, int ny, double c0, double lts, double re) for (int i = 0; i < nx; ++i) { - r = i + 1; - xla = det_lon_atovs(r, r0, lts, c, re); + double r = i + 1; + auto xla = det_lon_atovs(r, r0, lts, c, re); xvals[i] = xla; xla = det_lon_atovs(r - 0.5, r0, lts, c, re); xbounds[2 * i] = xla; @@ -173,8 +171,8 @@ defLonLatGrid(int nx, int ny, double c0, double lts, double re) for (int i = 0; i < ny; ++i) { - s = (nry - i - 1) + 1; - phi = det_lat_atovs(s, s0, lts, c, re); + double s = (nry - i - 1) + 1; + auto phi = det_lat_atovs(s, s0, lts, c, re); yvals[i] = phi; phi = det_lat_atovs(s - 0.5, s0, lts, c, re); ybounds[2 * i] = phi; @@ -627,8 +625,6 @@ read_region(hid_t loc_id, int nx, int ny) double xmax = region.area_extent[2]; double ymax = region.area_extent[3]; - double dx = (xmax - xmin) / nx; - double dy = (ymax - ymin) / ny; /* xsize = (int) std::lround((region.xmax-region.xmin)/region.dx); ysize = (int) std::lround((region.ymax-region.ymin)/region.dy); @@ -638,6 +634,8 @@ read_region(hid_t loc_id, int nx, int ny) if (nfound == 4 && nx == region.xsize && ny == region.ysize && cdo_cmpstr(proj, "laea")) { + double dx = (xmax - xmin) / nx; + double dy = (ymax - ymin) / ny; gridID = defLaeaGrid(nx, ny, xmin, ymax, dx, dy, a, lon0, lat0); } diff --git a/src/Info.cc b/src/Info.cc index 99badeb27c17edc2a752a4b7ac9e4883d1641307..ae99bb969da06220de0f13fc9335a5295ec3e8b0 100644 --- a/src/Info.cc +++ b/src/Info.cc @@ -42,7 +42,7 @@ static void field_min_max_sum(const Field &field, double &min, double &max, double &sum) { auto mms = MinMaxSum(min, max, sum); - auto func = [&](auto &v, auto n) { return varray_min_max_sum(v, n, mms); }; + auto func = [&](const auto &v, auto n) { return varray_min_max_sum(v, n, mms); }; mms = field_operation(func, field, field.size); min = mms.min; @@ -54,7 +54,7 @@ static size_t field_min_max_sum_mv(const Field &field, double &min, double &max, double &sum) { auto mms = MinMaxSum(min, max, sum); - auto func = [&](auto &v, auto n, double mv) { return varray_min_max_sum_mv(v, n, mms, mv); }; + auto func = [&](const auto &v, auto n, double mv) { return varray_min_max_sum_mv(v, n, mms, mv); }; mms = field_operation(func, field, field.size, field.missval); min = mms.min; @@ -220,7 +220,7 @@ print_map(int nlon, int nlat, const Varray<T> &varray, double mv, double min, do static void print_map(int nlon, int nlat, const Field &field, const InfoStat &infoStat) { - auto func = [&](auto &v, double mv) { print_map(nlon, nlat, v, mv, infoStat.min, infoStat.max); }; + auto func = [&](const auto &v, double mv) { print_map(nlon, nlat, v, mv, infoStat.min, infoStat.max); }; field_operation(func, field, field.missval); } @@ -246,7 +246,7 @@ complex_sum(const Varray<T> &v, double mv, size_t gridsize, double &sum, double static size_t field_complex_sum(const Field &field, double &sum, double &sumi) { - auto func = [&](auto &v, double mv, size_t gridsize) { return complex_sum(v, mv, gridsize, sum, sumi); }; + auto func = [&](const auto &v, double mv, size_t gridsize) { return complex_sum(v, mv, gridsize, sum, sumi); }; return field_operation(func, field, field.missval, field.gridsize); } @@ -454,8 +454,6 @@ public: bool printMap; bool lvinfo; - std::string e; // parameter_name - public: void init() override diff --git a/src/Input.cc b/src/Input.cc index c06c9614379e39595ea0a1b8a8dd9ad8a622654f..9cbd160f1f048a04bd7c964fa999e4c2ad55702a 100644 --- a/src/Input.cc +++ b/src/Input.cc @@ -195,10 +195,10 @@ public: outputFiletype = CdoDefault::FileType; if (outputFiletype == CDI_UNDEFID) outputFiletype = CDI_FILETYPE_EXT; } - else if (operatorID == INPUTEXT) + else if (operatorID == INPUTSRV) { outputFiletype = CdoDefault::FileType; - if (outputFiletype == CDI_UNDEFID) outputFiletype = CDI_FILETYPE_EXT; + if (outputFiletype == CDI_UNDEFID) outputFiletype = CDI_FILETYPE_SRV; } } diff --git a/src/Intgrid.cc b/src/Intgrid.cc index 795c1232ba818d4c324ec79a8bd607591d4fd900..2a3cc6eec78f25e9d52c9a60a96aff5c0b534011 100644 --- a/src/Intgrid.cc +++ b/src/Intgrid.cc @@ -50,7 +50,7 @@ thinout(const Varray<T1> &varray1, Varray<T2> &varray2, int gridID1, int gridID2 static void thinout(const Field &field1, Field &field2, size_t xinc, size_t yinc) { - auto func = [&](auto &v1, auto &v2, auto grid1, auto grid2) { thinout(v1, v2, grid1, grid2, xinc, yinc); }; + auto func = [&](const auto &v1, auto &v2, auto grid1, auto grid2) { thinout(v1, v2, grid1, grid2, xinc, yinc); }; field_operation2(func, field1, field2, field1.grid, field2.grid); field_num_mv(field2); } @@ -132,43 +132,48 @@ gen_boxavg_grid(int gridID1, size_t xinc, size_t yinc) gridInqXvals(gridID1, &xvals1[0]); gridInqYvals(gridID1, &yvals1[0]); - Varray<double> grid1_corner_lon, grid1_corner_lat; + for (size_t i = 0, j = 0; i < nlon1; i += xinc) + { + auto i1 = i + (xinc - 1); + if (i1 >= nlon1 - 1) i1 = nlon1 - 1; + xvals2[j] = xvals1[i] + (xvals1[i1] - xvals1[i]) / 2; + j++; + } + for (size_t i = 0, j = 0; i < nlat1; i += yinc) + { + auto i1 = i + (yinc - 1); + if (i1 >= nlat1 - 1) i1 = nlat1 - 1; + yvals2[j] = yvals1[i] + (yvals1[i1] - yvals1[i]) / 2; + j++; + } + Varray<double> grid2_corner_lon, grid2_corner_lat; if (gridHasBounds(gridID1)) { + Varray<double> grid1_corner_lon, grid1_corner_lat; grid1_corner_lon.resize(2 * nlon1); grid1_corner_lat.resize(2 * nlat1); grid2_corner_lon.resize(2 * nlon2); grid2_corner_lat.resize(2 * nlat2); gridInqXbounds(gridID1, &grid1_corner_lon[0]); gridInqYbounds(gridID1, &grid1_corner_lat[0]); - } - size_t j = 0; - for (size_t i = 0; i < nlon1; i += xinc) - { - auto i1 = i + (xinc - 1); - if (i1 >= nlon1 - 1) i1 = nlon1 - 1; - xvals2[j] = xvals1[i] + (xvals1[i1] - xvals1[i]) / 2; - if (!grid2_corner_lon.empty()) + for (size_t i = 0, j = 0; i < nlon1; i += xinc) { + auto i1 = i + (xinc - 1); + if (i1 >= nlon1 - 1) i1 = nlon1 - 1; grid2_corner_lon[2 * j] = grid1_corner_lon[2 * i]; grid2_corner_lon[2 * j + 1] = grid1_corner_lon[2 * i1 + 1]; + j++; } - j++; - } - j = 0; - for (size_t i = 0; i < nlat1; i += yinc) - { - auto i1 = i + (yinc - 1); - if (i1 >= nlat1 - 1) i1 = nlat1 - 1; - yvals2[j] = yvals1[i] + (yvals1[i1] - yvals1[i]) / 2; - if (!grid2_corner_lat.empty()) + for (size_t i = 0, j = 0; i < nlat1; i += yinc) { + auto i1 = i + (yinc - 1); + if (i1 >= nlat1 - 1) i1 = nlat1 - 1; grid2_corner_lat[2 * j] = grid1_corner_lat[2 * i]; grid2_corner_lat[2 * j + 1] = grid1_corner_lat[2 * i1 + 1]; + j++; } - j++; } gridDefXvals(gridID2, &xvals2[0]); @@ -225,7 +230,7 @@ boxavg(const Varray<T1> &varray1, Varray<T2> &varray2, int gridID1, int gridID2, static void boxavg(const Field &field1, Field &field2, size_t xinc, size_t yinc) { - auto func = [&](auto &v1, auto &v2, auto grid1, auto grid2) { boxavg(v1, v2, grid1, grid2, xinc, yinc); }; + auto func = [&](const auto &v1, auto &v2, auto grid1, auto grid2) { boxavg(v1, v2, grid1, grid2, xinc, yinc); }; field_operation2(func, field1, field2, field1.grid, field2.grid); field_num_mv(field2); } diff --git a/src/Intlevel.cc b/src/Intlevel.cc index 7d703c5bac3c6f0db0c36b00c35788884b4a4836..d4de4349542ff1c5fe360b3338776d4728c8b487 100644 --- a/src/Intlevel.cc +++ b/src/Intlevel.cc @@ -150,7 +150,7 @@ vert_gen_weights(int extrapolate, int nlev1, const Varray<double> &lev1, int nle for (int i2 = 0; i2 < nlev2; ++i2) { int idx1 = 0, idx2 = 0; - double val1, val2 = 0.0; + double val2 = 0.0; // Because 2 levels were added to the source vertical coordinate (one on top, one at the bottom), its loop starts at 1 int i1; @@ -159,7 +159,7 @@ vert_gen_weights(int extrapolate, int nlev1, const Varray<double> &lev1, int nle auto lev1_isUp = (lev1[i1 - 1] < lev1[i1]); idx1 = lev1_isUp ? i1 - 1 : i1; idx2 = lev1_isUp ? i1 : i1 - 1; - val1 = lev1[idx1]; + auto val1 = lev1[idx1]; val2 = lev1[idx2]; if (lev2[i2] > val1 && lev2[i2] <= val2) break; } @@ -486,7 +486,6 @@ public: if (std::isdigit((int) pargv[0][0])) { params.levels = cdo_argv_to_fltarr(pargv); } else { - std::string zdescription; params = get_parameter(); if (!params.zdescription.empty()) { @@ -623,7 +622,8 @@ public: for (int levelID = 0; levelID < nlev2; ++levelID) { auto offset = gridsize * levelID; - auto func = [&](auto &v) { varnumMissVals[varID][levelID] = array_num_mv(gridsize, &v[offset], missval); }; + auto func + = [&](const auto &v) { varnumMissVals[varID][levelID] = array_num_mv(gridsize, &v[offset], missval); }; field_operation(func, vardata2[varID]); } } diff --git a/src/Intlevel3d.cc b/src/Intlevel3d.cc index 2bc768afc53688c6aeb2342b8715c2b6f84fef6d..602d913ffa6c93ed68293639db110703c667d71a 100644 --- a/src/Intlevel3d.cc +++ b/src/Intlevel3d.cc @@ -351,8 +351,7 @@ public: // Read the whole 3d data field for (int recID = 0; recID < nrecs; ++recID) { - int varID, levelID; - cdo_inq_record(streamID1, &varID, &levelID); + auto [varID, levelID] = cdo_inq_record(streamID1); cdo_read_record(streamID1, vardata1[varID], levelID, &varnumMissVals[varID][levelID]); processVars[varID] = true; } @@ -371,7 +370,8 @@ public: for (int levelID = 0; levelID < nlevo; ++levelID) { auto offset = gridsize * levelID; - auto func = [&](auto &v) { varnumMissVals[varID][levelID] = array_num_mv(gridsize, &v[offset], missval); }; + auto func + = [&](const auto &v) { varnumMissVals[varID][levelID] = array_num_mv(gridsize, &v[offset], missval); }; field_operation(func, vardata2[varID]); } } diff --git a/src/Merge.cc b/src/Merge.cc index 52581919292bedd38cca3bc551bb4e1852e17333..c174639248b42eb172621401e6f21c0cd0c25563 100644 --- a/src/Merge.cc +++ b/src/Merge.cc @@ -308,7 +308,7 @@ public: void close() override { - for (auto &streamID : streamIDs) cdo_stream_close(streamID); + for (const auto &streamID : streamIDs) cdo_stream_close(streamID); cdo_stream_close(streamID2); diff --git a/src/Mergetime.cc b/src/Mergetime.cc index f391cca665755e2639f095d7ac7af950e534b1cd..f051bf0ab71bc6576198ead21ee401c09168bd0c 100644 --- a/src/Mergetime.cc +++ b/src/Mergetime.cc @@ -204,7 +204,7 @@ public: } void - fill_missing_fields(StreamInfo &si1, StreamInfo &si2) + fill_missing_fields(const StreamInfo &si1, StreamInfo &si2) { auto maxVars = si1.varList.numVars(); auto numVars = si2.varList.numVars(); diff --git a/src/Ninfo.cc b/src/Ninfo.cc index 2bcbd403c4bbeb69070d1d629bbacb12ee1eaea8..078e5e55571db0abc3128b137665fa7e756ba0ea 100644 --- a/src/Ninfo.cc +++ b/src/Ninfo.cc @@ -68,7 +68,6 @@ public: void init() override { - auto operatorID = cdo_operator_id(); operfunc = cdo_operator_f1(operatorID); @@ -92,42 +91,45 @@ public: { case NYEAR: { - int year0 = 0; int nyear = 0; - int tsID = 0; if (ntsteps != 0) - while (cdo_stream_inq_timestep(streamID, tsID)) - { - int year = taxisInqVdatetime(taxisID).date.year; - - if (tsID == 0 || year0 != year) - { - year0 = year; - nyear++; - } - - tsID++; - } + { + int year0 = 0; + int tsID = 0; + while (cdo_stream_inq_timestep(streamID, tsID)) + { + int year = taxisInqVdatetime(taxisID).date.year; + if (tsID == 0 || year0 != year) + { + year0 = year; + nyear++; + } + + tsID++; + } + } fprintf(stdout, "%d\n", nyear); break; } case NMON: { - int month0 = 0; int nmonth = 0; - int tsID = 0; if (ntsteps != 0) - while (cdo_stream_inq_timestep(streamID, tsID)) - { - int month = taxisInqVdatetime(taxisID).date.month; - if (tsID == 0 || month0 != month) - { - month0 = month; - nmonth++; - } - - tsID++; - } + { + int month0 = 0; + int tsID = 0; + while (cdo_stream_inq_timestep(streamID, tsID)) + { + int month = taxisInqVdatetime(taxisID).date.month; + if (tsID == 0 || month0 != month) + { + month0 = month; + nmonth++; + } + + tsID++; + } + } fprintf(stdout, "%d\n", nmonth); break; } @@ -135,19 +137,21 @@ public: { CdiDate date0{}; int ndate = 0; - int tsID = 0; if (ntsteps != 0) - while (cdo_stream_inq_timestep(streamID, tsID)) - { - auto vDate = taxisInqVdatetime(taxisID).date; - if (tsID == 0 || !cdiDate_isEQ(date0, vDate)) - { - date0 = vDate; - ndate++; - } - - tsID++; - } + { + int tsID = 0; + while (cdo_stream_inq_timestep(streamID, tsID)) + { + auto vDate = taxisInqVdatetime(taxisID).date; + if (tsID == 0 || !cdiDate_isEQ(date0, vDate)) + { + date0 = vDate; + ndate++; + } + + tsID++; + } + } fprintf(stdout, "%d\n", ndate); break; } diff --git a/src/Outputgmt.cc b/src/Outputgmt.cc index a54543095aebec9a335ecbefdc0960d8f3001e0d..3e92386294c6133919ce884180b5f854a690be52 100644 --- a/src/Outputgmt.cc +++ b/src/Outputgmt.cc @@ -67,7 +67,7 @@ check_lonbounds(int ncorner, double *lon_bounds) } static void -make_cyclic(double *array1, double *array2, long nlon, long nlat) +make_cyclic(const double *array1, double *array2, long nlon, long nlat) { for (long j = 0; j < nlat; ++j) for (long i = 0; i < nlon; ++i) @@ -91,8 +91,8 @@ output_zon(double levmin, double levmax, const double *cell_corner_lat) auto latmax = cell_corner_lat[0]; for (int ic = 1; ic < 4; ++ic) latmin = std::min(latmin, cell_corner_lat[ic]); for (int ic = 1; ic < 4; ++ic) latmax = std::max(latmax, cell_corner_lat[ic]); - double xlev[4] = { levmin, levmax, levmax, levmin }; - double xlat[4] = { latmin, latmin, latmax, latmax }; + const double xlev[4] = { levmin, levmax, levmax, levmin }; + const double xlat[4] = { latmin, latmin, latmax, latmax }; for (int ic = 0; ic < 4; ++ic) fprintf(stdout, " %g %g\n", xlat[ic], xlev[ic]); fprintf(stdout, " %g %g\n", xlat[0], xlev[0]); } @@ -104,8 +104,8 @@ output_mer(double levmin, double levmax, const double *cell_corner_lon) auto lonmax = cell_corner_lon[0]; for (int ic = 1; ic < 4; ++ic) lonmin = std::min(lonmin, cell_corner_lon[ic]); for (int ic = 1; ic < 4; ++ic) lonmax = std::max(lonmax, cell_corner_lon[ic]); - double xlev[4] = { levmin, levmin, levmax, levmax }; - double xlon[4] = { lonmin, lonmax, lonmax, lonmin }; + const double xlev[4] = { levmin, levmin, levmax, levmax }; + const double xlon[4] = { lonmin, lonmax, lonmax, lonmin }; for (int ic = 0; ic < 4; ++ic) fprintf(stdout, " %g %g\n", xlon[ic], xlev[ic]); fprintf(stdout, " %g %g\n", xlon[0], xlev[0]); } @@ -272,7 +272,7 @@ output_kml(size_t ngp, const Varray<double> &array, int ncorner, const Varray<do if (grid_mask.size() && grid_mask[i] == 0) continue; auto lonBounds = &grid_corner_lon[i * ncorner]; - auto latBounds = &grid_corner_lat[i * ncorner]; + const auto latBounds = &grid_corner_lat[i * ncorner]; auto ncornerNew = check_ncorner(ncorner, lonBounds, latBounds); check_lonbounds(ncornerNew, lonBounds); @@ -717,8 +717,7 @@ public: for (long j = 0; j < nlat - 1; ++j) for (long i = 0; i < mlon; ++i) { - int ip1 = i + 1; - if (i == nlon - 1) ip1 = 0; + int ip1 = (i == nlon - 1) ? 0 : i + 1; int c1 = (j) *nlon + ip1; int c2 = (j) *nlon + i; int c3 = (j + 1) * nlon + i; diff --git a/src/Pack.cc b/src/Pack.cc index e05f284821672cf3fef17ea3dc59f1dce9ba17b2..9e9ec2bda753f2b24f410b0e9c929937dcf605ae 100644 --- a/src/Pack.cc +++ b/src/Pack.cc @@ -273,7 +273,7 @@ private: { if (t > 0 && var.isConstant) continue; - auto &field = varsData[t][varID][levelID]; + const auto &field = varsData[t][varID][levelID]; auto numMissVals = field.numMissVals; if (numMissVals) numMissValspv += numMissVals; @@ -362,7 +362,7 @@ private: { const auto &var = varList1.vars[varID]; - for (auto &packEntry : packList) + for (const auto &packEntry : packList) { if (var.name == packEntry.name) { diff --git a/src/Remapeta.cc b/src/Remapeta.cc index 2a8f89183c81c24ec58b330c80dc6eb3e2bae2a5..0e4348e4473c92bb88afcaacc5354b29e0417fb0 100644 --- a/src/Remapeta.cc +++ b/src/Remapeta.cc @@ -159,7 +159,7 @@ template <typename T> void field_copy_array(size_t len, const Field &field, T *array) { - auto func = [&](auto &v) { + auto func = [&](const auto &v) { for (size_t i = 0; i < len; ++i) array[i] = v[i]; }; field_operation(func, field); @@ -399,7 +399,7 @@ public: operator_input_arg(cdo_operator_enter(operatorID)); - auto envstr = getenv("REMAPETA_PTOP"); + const auto envstr = getenv("REMAPETA_PTOP"); if (envstr) { auto fval = atof(envstr); diff --git a/src/Remapgrid.cc b/src/Remapgrid.cc index 36ad8b53cb56fe79928ba1bea25b1e1ddc94c665..7783dc5a3380b76a76d8f6d7f4cf2bfe411ee153 100644 --- a/src/Remapgrid.cc +++ b/src/Remapgrid.cc @@ -154,7 +154,7 @@ remap_normalize_field(NormOpt normOpt, Field &field, const RemapGrid &tgtGrid) template <typename T> static void -remap_set_fracmin(double fracMin, size_t gridsize, Varray<T> &array, double mv, RemapGrid *tgtGrid) +remap_set_fracmin(double fracMin, size_t gridsize, Varray<T> &array, double mv, const RemapGrid *tgtGrid) { if (fracMin > 0.0) { @@ -165,7 +165,7 @@ remap_set_fracmin(double fracMin, size_t gridsize, Varray<T> &array, double mv, } static void -remap_set_fracmin(double fracMin, Field &field, RemapGrid *tgtGrid) +remap_set_fracmin(double fracMin, Field &field, const RemapGrid *tgtGrid) { auto func = [&](auto &v) { remap_set_fracmin(fracMin, field.gridsize, v, field.missval, tgtGrid); }; field_operation(func, field); diff --git a/src/Remapstat.cc b/src/Remapstat.cc index be7ed0718e15b5bb6754a934f0e44213f152c1e6..c9d4be3056d112cff57b39728f099c5d5fc3625a 100644 --- a/src/Remapstat.cc +++ b/src/Remapstat.cc @@ -254,7 +254,8 @@ find_points_yac(std::vector<char> &vmask, size_t cell_no, size_t ncorner, size_t cell.edge_type = new enum yac_edge_type[ncorner]; cell.coordinates_xyz = new double[ncorner][3]; - // enum yac_edge_type lonlat_circle_type[] = { YAC_LON_CIRCLE_EDGE, YAC_LAT_CIRCLE_EDGE, YAC_LON_CIRCLE_EDGE, YAC_LAT_CIRCLE_EDGE, YAC_LON_CIRCLE_EDGE + // enum yac_edge_type lonlat_circle_type[] = { YAC_LON_CIRCLE_EDGE, YAC_LAT_CIRCLE_EDGE, YAC_LON_CIRCLE_EDGE, YAC_LAT_CIRCLE_EDGE, + // YAC_LON_CIRCLE_EDGE // }; for (size_t k = 0; k < ncorner; ++k) @@ -379,19 +380,21 @@ find_points_rec2d(std::vector<char> &vmask, size_t i, size_t nlon2, size_t numIn for (size_t k = 0; k < numIndices; ++k) { auto index1 = indices[k]; - auto x = xvals1[index1]; auto y = yvals1[index1]; if (y >= ybounds2d[2 * iy] && y < ybounds2d[2 * iy + 1]) - if ((x >= xbounds2d[2 * ix] && x < xbounds2d[2 * ix + 1]) - || ((x - PI2) >= xbounds2d[2 * ix] && (x - PI2) < xbounds2d[2 * ix + 1])) - { - if (vmask[index1] == 0) - { - indices[nvalues] = index1; - nvalues++; - } - if (vmask[index1] < 127) vmask[index1]++; - } + { + auto x = xvals1[index1]; + if ((x >= xbounds2d[2 * ix] && x < xbounds2d[2 * ix + 1]) + || ((x - PI2) >= xbounds2d[2 * ix] && (x - PI2) < xbounds2d[2 * ix + 1])) + { + if (vmask[index1] == 0) + { + indices[nvalues] = index1; + nvalues++; + } + if (vmask[index1] < 127) vmask[index1]++; + } + } } return nvalues; diff --git a/src/Runstat.cc b/src/Runstat.cc index 42bed34b72da2bd6581bb43f26cca9381dc33ffc..0dc069d6dbeca5ab4c154df1982ba5eb7d01b74a 100644 --- a/src/Runstat.cc +++ b/src/Runstat.cc @@ -71,7 +71,7 @@ public: void init() override { - auto envstr = getenv("RUNSTAT_NOMISS"); + const auto envstr = getenv("RUNSTAT_NOMISS"); if (envstr) { char *endptr; diff --git a/src/Selbox.cc b/src/Selbox.cc index d98a138e2d4872ce4d9e10fde40b505affb47e4f..581d30018e38d1840fedd20cf34bd8b65dcfd65c 100644 --- a/src/Selbox.cc +++ b/src/Selbox.cc @@ -921,7 +921,7 @@ window_box(int nwpv, const T1 *array1, int gridID, T2 *array2, long lat1, long l static void window_box(const Field &field1, Field &field2, long lat1, long lat2, long lon11, long lon12, long lon21, long lon22) { - auto func = [&](auto &v1, auto &v2) { + auto func = [&](const auto &v1, auto &v2) { window_box(field1.nwpv, v1.data(), field1.grid, v2.data(), lat1, lat2, lon11, lon12, lon21, lon22); }; field_operation2(func, field1, field2); diff --git a/src/Selgridcell.cc b/src/Selgridcell.cc index 1b8ff405e6c04060de587f8392b2a8132bc2cf89..e54265975a28da8e44e7488c7657ecb92cf6be0f 100644 --- a/src/Selgridcell.cc +++ b/src/Selgridcell.cc @@ -77,7 +77,7 @@ genindexgrid(int gridID1, size_t gridsize2, const std::vector<long> &cellidx) static void select_index(const Field &field1, Field &field2, long nind, const std::vector<long> &cellIndex) { - auto func = [&](auto &v1, auto &v2) { + auto func = [&](const auto &v1, auto &v2) { for (long i = 0; i < nind; ++i) v2[i] = v1[cellIndex[i]]; }; field_operation2(func, field1, field2); diff --git a/src/Selregion.cc b/src/Selregion.cc index b432ee0c640935f0fdda6eec3cc34a7af5b41858..cf1bc848cd7e8607b53e820333244a84fcd5ede0 100644 --- a/src/Selregion.cc +++ b/src/Selregion.cc @@ -130,8 +130,8 @@ generate_region_grid(int gridID1, long &gridsize2, std::vector<long> &cellidx, i auto segmentSize = regions.segmentSize[k]; if (segmentSize < 3) continue; auto offset = regions.segmentOffset[k]; - auto xcoords = ®ions.x[offset]; - auto ycoords = ®ions.y[offset]; + const auto xcoords = ®ions.x[offset]; + const auto ycoords = ®ions.y[offset]; sel_region_cell(mask, gridsize, xvals, yvals, xcoords, ycoords, segmentSize, cellidx); } } diff --git a/src/Setfilter.cc b/src/Setfilter.cc index ffd0772b6c76b450e527bda5326accd4d385174f..0a3edf1c230f581ab1d78d374c04e3db4483fc8e 100644 --- a/src/Setfilter.cc +++ b/src/Setfilter.cc @@ -200,8 +200,11 @@ public: for (int recID = 0; recID < nrecs; ++recID) { - auto fstatus = (tsID + (recID + 1.0) / nrecs) / numSteps; - if (numSteps > 0) progress.update(fstatus); + if (numSteps > 0) + { + auto fstatus = (tsID + (recID + 1.0) / nrecs) / numSteps; + progress.update(fstatus); + } auto [varID, levelID] = cdo_inq_record(streamID1); cdo_def_record(streamID2, varID, levelID); diff --git a/src/Setgrid.cc b/src/Setgrid.cc index afab77d5cb627be2f77dd5e175fc73ba31c025cd..865a345878a69a7acf932a60e09e3a5b57440c51 100644 --- a/src/Setgrid.cc +++ b/src/Setgrid.cc @@ -158,7 +158,7 @@ grid_set_cellarea(int vlistID1, int vlistID2, Varray<double> &gridcellArea) } static void -grid_set_mask(int vlistID1, int vlistID2, Varray<double> &gridmask) +grid_set_mask(int vlistID1, int vlistID2, const Varray<double> &gridmask) { auto masksize = gridmask.size(); auto ngrids = vlistNumGrids(vlistID1); diff --git a/src/Smooth.cc b/src/Smooth.cc index 02b3e347b0ae2495103aab5329bc87f27e23e8ed..0341bbd9a497c1faddde316dc69d13f571099b82 100644 --- a/src/Smooth.cc +++ b/src/Smooth.cc @@ -132,7 +132,7 @@ smooth(int gridID, double mv, const Varray<T1> &array1, Varray<T2> &array2, cons static void smooth(const Field &field1, Field &field2, const SmoothPoint &spoint) { - auto func = [&](auto &v1, auto &v2) { field2.numMissVals = smooth(field1.grid, field1.missval, v1, v2, spoint); }; + auto func = [&](const auto &v1, auto &v2) { field2.numMissVals = smooth(field1.grid, field1.missval, v1, v2, spoint); }; field_operation2(func, field1, field2); } @@ -248,7 +248,7 @@ smooth9(int gridID, double mv, const Varray<T1> &array1, Varray<T2> &array2) static void smooth9(const Field &field1, Field &field2) { - auto func = [&](auto &v1, auto &v2) { field2.numMissVals = smooth9(field1.grid, field1.missval, v1, v2); }; + auto func = [&](const auto &v1, auto &v2) { field2.numMissVals = smooth9(field1.grid, field1.missval, v1, v2); }; field_operation2(func, field1, field2); } diff --git a/src/Split.cc b/src/Split.cc index 6eee7369b4c4e927e810b4738dfb72257fe6e1a1..8d3f141892d288895ce416f7ac205d51d99ee8a5 100644 --- a/src/Split.cc +++ b/src/Split.cc @@ -36,7 +36,7 @@ gen_filename(std::string &fileName, bool swapObase, const std::string &obase, co } static int -split_code(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_code(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { auto numVars = varList.numVars(); @@ -87,7 +87,7 @@ split_code(bool swapObase, const std::string &fileSuffix, std::string &fileName, } static int -split_param(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_param(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { char paramstr[32]; @@ -140,7 +140,7 @@ split_param(bool swapObase, const std::string &fileSuffix, std::string &fileName } static int -split_name(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_name(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { auto numVars = varList.numVars(); @@ -174,7 +174,7 @@ split_name(bool swapObase, const std::string &fileSuffix, std::string &fileName, } static int -split_level(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_level(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { auto numVars = varList.numVars(); @@ -232,7 +232,7 @@ split_level(bool swapObase, const std::string &fileSuffix, std::string &fileName } static int -split_grid(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_grid(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { auto nsplit = vlistNumGrids(vlistID1); @@ -273,7 +273,7 @@ split_grid(bool swapObase, const std::string &fileSuffix, std::string &fileName, } static int -split_zaxis(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_zaxis(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { auto nsplit = vlistNumZaxis(vlistID1); @@ -314,7 +314,7 @@ split_zaxis(bool swapObase, const std::string &fileSuffix, std::string &fileName } static int -split_tabnum(bool swapObase, const std::string &fileSuffix, std::string &fileName, int vlistID1, const VarList &varList, +split_tabnum(bool swapObase, const std::string &fileSuffix, const std::string &fileName, int vlistID1, const VarList &varList, std::vector<CdoStreamID> &streamIDs, std::vector<int> &vlistIDs) { auto numVars = varList.numVars(); @@ -514,7 +514,7 @@ public: { cdo_stream_close(streamID1); - for (auto &streamID : streamIDs) cdo_stream_close(streamID); - for (auto &id : vlistIDs) vlistDestroy(id); + for (const auto &streamID : streamIDs) cdo_stream_close(streamID); + for (const auto &id : vlistIDs) vlistDestroy(id); } }; diff --git a/src/Vargen.cc b/src/Vargen.cc index e70561f38af24ec56726f3d478e9d4e1a7ad2514..352fc6dcc7b51375e2a774851ea1c64afec4d1bc 100644 --- a/src/Vargen.cc +++ b/src/Vargen.cc @@ -282,7 +282,7 @@ private: double rstart = 0.0, rstop = 0.0, rinc = 0.0; double rconst = 0.0; std::vector<double> levels; - int ntimesteps; + int numSteps; int taxisID; CdoStreamID streamID; @@ -402,7 +402,7 @@ public: cdo_def_vlist(streamID, vlistID); - ntimesteps = (operatorID == SEQ) ? 1.001 + ((rstop - rstart) / rinc) : 1; + numSteps = (operatorID == SEQ) ? 1.001 + ((rstop - rstart) / rinc) : 1; if (operatorID != SEQ) vlistDefNtsteps(vlistID, 0); } @@ -416,7 +416,7 @@ public: size_t gridsize = gridInqSize(gridID); Varray<float> array(gridsize); - for (int tsID = 0; tsID < ntimesteps; ++tsID) + for (int tsID = 0; tsID < numSteps; ++tsID) { auto rval = rstart + rinc * tsID; CdiDateTime vDateTime{}; diff --git a/src/Vertintml.cc b/src/Vertintml.cc index 5160a6fdab5f5adfd8a9517e87a49a1dc08ba5c2..cb717f989de6bbf5b4c980541c67056d467c398d 100644 --- a/src/Vertintml.cc +++ b/src/Vertintml.cc @@ -48,7 +48,7 @@ field_check_sgeopot(const Varray<T> &sgeopot, const T *gheightAtSurface) } static void -field_check_sgeopot(MemType memType, size_t gridsize, int nlevels, const Field &field2d, Field3D &field3d) +field_check_sgeopot(MemType memType, size_t gridsize, int nlevels, const Field &field2d, const Field3D &field3d) { if (memType == MemType::Float) field_check_sgeopot(field2d.vec_f, &field3d.vec_f[gridsize * (nlevels - 1)]); @@ -119,7 +119,7 @@ zaxis_is_hybrid(int zaxisType) } static void -change_hybrid_zaxis(int vlistID1, int vlistID2, int vctSize, double *vct, int zaxisID2, int numFullLevels, int numHalfLevels) +change_hybrid_zaxis(int vlistID1, int vlistID2, int vctSize, const double *vct, int zaxisID2, int numFullLevels, int numHalfLevels) { auto nzaxis = vlistNumZaxis(vlistID1); for (int iz = 0; iz < nzaxis; ++iz) @@ -296,7 +296,7 @@ pressure_level_interpolation(Varray<double> &pressureLevels, bool useHeightLevel { if (interpVars[varID]) { - auto &var1 = varList1.vars[varID]; + const auto &var1 = varList1.vars[varID]; if (var1.nlevels == numHalfLevels && varID != varIDs.gheightID) needVertIndexHalf = true; } } diff --git a/src/cdo_fftw3.cc b/src/cdo_fftw3.cc index 757756024272cbbb2bdf2881089730afee7ebcbe..bd7af926dc1ee7d9bf3f944f7ba0fd24a694fa30 100644 --- a/src/cdo_fftw3.cc +++ b/src/cdo_fftw3.cc @@ -42,7 +42,7 @@ fourier2grid(int gridID1, const Varray<double> &array1, Varray<double> &array2) { auto ompthID = cdo_omp_get_thread_num(); auto in_fft = ompmem[ompthID].in_fft; - auto out_fft = ompmem[ompthID].out_fft; + const auto out_fft = ompmem[ompthID].out_fft; for (size_t ifc = 0; ifc < nlon; ++ifc) { diff --git a/src/cdo_getopt.cc b/src/cdo_getopt.cc index bcdf0e42cc78501cd532b52d24e9d57ff796e403..ffe95020d9f06c1f1e712c92a9ec1d103befe1d6 100644 --- a/src/cdo_getopt.cc +++ b/src/cdo_getopt.cc @@ -164,7 +164,7 @@ CLIOptions::get_env_vars() const char *envVarValue = getenv(setting_ptr->name.c_str()); if (envVarValue) { - if (!setting_ptr->hasArgument || (setting_ptr->hasArgument && *envVarValue)) + if (!setting_ptr->hasArgument || *envVarValue) { Debug(CLIOP_DBG, "Executing envvar %s", setting_ptr->name); setting_ptr->argument.value = envVarValue ? std::string(envVarValue) : std::string(); @@ -177,7 +177,7 @@ CLIOptions::get_env_vars() void CLIOptions::print_registry(const std::vector<std::shared_ptr<cdo_option_2>> &p_registry) { - for (auto &it : p_registry) + for (const auto &it : p_registry) { if (it->argument.value.size() > 0) fprintf(stderr, "%s = %s\n", it->name.c_str(), it->argument.value.c_str()); } @@ -189,7 +189,7 @@ CLIOptions::envvar(const std::string &p_name) if (envvarMap.find(p_name) == envvarMap.end()) { envvarRegistry.push_back(std::make_shared<cdo_option_2>()); - auto &newEnvVar = envvarRegistry.back(); + const auto &newEnvVar = envvarRegistry.back(); envvarMap[p_name] = newEnvVar; newEnvVar->name = p_name; } @@ -226,7 +226,7 @@ std::string CLIOptions::print_envvar_help() { std::stringstream helpString; - for (auto &it : envvarMap) + for (const auto &it : envvarMap) { if (!it.second->isInternal) { @@ -236,7 +236,7 @@ CLIOptions::print_envvar_help() if (it.second->hasArgument) helpString << " <" + it.second->argument.description + "> "; int spaceLeft = padding - helpString.str().size() + len0; if (spaceLeft < 0) spaceLeft = 0; - for (auto &line : it.second->description) { helpString << std::string(spaceLeft, ' ') + line + "\n"; } + for (const auto &line : it.second->description) { helpString << std::string(spaceLeft, ' ') + line + "\n"; } } } return helpString.str(); @@ -267,7 +267,7 @@ CLIOptions::print_options_help(const std::string &p_category) helpString += "\n"; spaceLeft = padding; } - for (auto &line : option->description) + for (const auto &line : option->description) { helpString += std::string(spaceLeft, ' ') + line + "\n"; spaceLeft = padding; @@ -315,7 +315,7 @@ CLIOptions::option_from_envvar(const std::string &p_envvarName) void CLIOptions::print_available_options() { - for (auto &iter : optionMap) { std::cerr << iter.first << std::endl; } + for (const auto &iter : optionMap) { std::cerr << iter.first << std::endl; } std::cerr << "_---------------------------------_" << std::endl; for (auto &iter : optionMap) { diff --git a/src/cdo_stepstat.h b/src/cdo_stepstat.h index 99d93de3e20981d33cd58631b8be0dc414ecc332..5055a89003085428631861fcff3e784ac01d47ed 100644 --- a/src/cdo_stepstat.h +++ b/src/cdo_stepstat.h @@ -37,71 +37,71 @@ public: } void - add_field_kernel(const Field &field, Field &samp, Field &var1, Field &var2, int numSets) + add_field_kernel(const Field &field, Field &sampData, Field &varData1, Field &varData2, int numSets) { if (numSets == 0) { if (lminidx || lmaxidx) - field_fill(var1, 0.0); + field_fill(varData1, 0.0); else - field_copy(field, var1); + field_copy(field, varData1); - if (lrange || lminidx || lmaxidx) field_copy(field, var2); + if (lrange || lminidx || lmaxidx) field_copy(field, varData2); - if (lvarstd) field2_moq(var2, var1); + if (lvarstd) field2_moq(varData2, varData1); - if (field.numMissVals || !samp.empty()) + if (field.numMissVals || !sampData.empty()) { - if (samp.empty()) samp.resize(var1.size); - field2_vinit(samp, field); + if (sampData.empty()) sampData.resize(varData1.size); + field2_vinit(sampData, field); } } else { - if (field.numMissVals || !samp.empty()) + if (field.numMissVals || !sampData.empty()) { - if (samp.empty()) samp.resize(var1.size, numSets); - field2_vincr(samp, field); + if (sampData.empty()) sampData.resize(varData1.size, numSets); + field2_vincr(sampData, field); } // clang-format off - if (lvarstd) field2_sumsumq(var1, var2, field); - else if (lrange) field2_maxmin(var1, var2, field); - else if (lminidx) field2_minidx(var1, var2, field, numSets); - else if (lmaxidx) field2_maxidx(var1, var2, field, numSets); - else field2_function(var1, field, operfunc); + if (lvarstd) field2_sumsumq(varData1, varData2, field); + else if (lrange) field2_maxmin(varData1, varData2, field); + else if (lminidx) field2_minidx(varData1, varData2, field, numSets); + else if (lmaxidx) field2_maxidx(varData1, varData2, field, numSets); + else field2_function(varData1, field, operfunc); // clang-format on } } void - process_kernel(const Field &samp, Field &var1, const Field &var2, int numSets) + process_kernel(const Field &sampData, Field &varData1, const Field &varData2, int numSets) { auto field2_stdvar_func = lstd ? field2_std : field2_var; auto fieldc_stdvar_func = lstd ? fieldc_std : fieldc_var; if (lmeanavg) { - if (!samp.empty()) - field2_div(var1, samp); + if (!sampData.empty()) + field2_div(varData1, sampData); else - fieldc_div(var1, (double) numSets); + fieldc_div(varData1, (double) numSets); } else if (lvarstd) { - if (!samp.empty()) - field2_stdvar_func(var1, var2, samp, divisor); + if (!sampData.empty()) + field2_stdvar_func(varData1, varData2, sampData, divisor); else - fieldc_stdvar_func(var1, var2, numSets, divisor); + fieldc_stdvar_func(varData1, varData2, numSets, divisor); } - else if (lrange) { field2_sub(var1, var2); } + else if (lrange) { field2_sub(varData1, varData2); } } }; class StepStat1Dvars : public StepStatBase { private: - FieldVector sampData; + FieldVector sampsData; FieldVector varsData1; FieldVector varsData2; @@ -110,7 +110,7 @@ public: alloc(const VarList &varList, int VARS_MEMTYPE) { auto var2needed = (lvarstd || lrange || lminidx || lmaxidx); - field1Dvars_init(sampData, varList); + field1Dvars_init(sampsData, varList); field1Dvars_init(varsData1, varList, FIELD_VEC | VARS_MEMTYPE); field1Dvars_init(varsData2, varList, var2needed ? FIELD_VEC : 0); } @@ -130,20 +130,20 @@ public: Field & samp(int varID) { - return sampData[varID]; + return sampsData[varID]; } void process(int varID, int numSets) { - process_kernel(sampData[varID], varsData1[varID], varsData2[varID], numSets); + process_kernel(sampsData[varID], varsData1[varID], varsData2[varID], numSets); } }; class StepStat1Dlevels : public StepStatBase { private: - FieldVector sampData; + FieldVector sampsData; FieldVector varsData1; FieldVector varsData2; @@ -152,7 +152,7 @@ public: alloc(const VarList &varList, int VARS_MEMTYPE) { auto var2needed = (lvarstd || lrange || lminidx || lmaxidx); - field1Dlevels_init(sampData, varList); + field1Dlevels_init(sampsData, varList); field1Dlevels_init(varsData1, varList, FIELD_VEC | VARS_MEMTYPE); field1Dlevels_init(varsData2, varList, var2needed ? FIELD_VEC : 0); } @@ -166,13 +166,13 @@ public: void add_field(const Field &field, int levelID, int numSets) { - auto &samp = sampData[levelID]; - auto &var1 = varsData1[levelID]; - auto &var2 = varsData2[levelID]; + auto &sampData = sampsData[levelID]; + auto &varData1 = varsData1[levelID]; + auto &varData2 = varsData2[levelID]; - var1.nsamp++; - if (lrange) var2.nsamp++; - add_field_kernel(field, samp, var1, var2, numSets); + varData1.nsamp++; + if (lrange) varData2.nsamp++; + add_field_kernel(field, sampData, varData1, varData2, numSets); } void @@ -184,7 +184,7 @@ public: void process(int levelID, int numSets) { - process_kernel(sampData[levelID], varsData1[levelID], varsData2[levelID], numSets); + process_kernel(sampsData[levelID], varsData1[levelID], varsData2[levelID], numSets); } }; @@ -192,12 +192,12 @@ class StepStat2D : public StepStatBase { private: Varray<double> vsamp; - FieldVector2D sampData; + FieldVector2D sampsData; FieldVector2D varsData1; FieldVector2D varsData2; static void - set_missval(Field &field, const Field &samp, int numSets, double vfraction) + set_missval(Field &field, const Field &sampData, int numSets, double vfraction) { auto fieldsize = field.size; auto missval = field.missval; @@ -205,7 +205,7 @@ private: size_t irun = 0; for (size_t i = 0; i < fieldsize; ++i) { - if ((samp.vec_d[i] / numSets) < vfraction) + if ((sampData.vec_d[i] / numSets) < vfraction) { field.vec_d[i] = missval; irun++; @@ -220,7 +220,7 @@ public: alloc(const VarList &varList, int VARS_MEMTYPE) { auto var2needed = (lvarstd || lrange || lminidx || lmaxidx); - field2D_init(sampData, varList); + field2D_init(sampsData, varList); field2D_init(varsData1, varList, FIELD_VEC | VARS_MEMTYPE); field2D_init(varsData2, varList, var2needed ? FIELD_VEC : 0); } @@ -234,12 +234,12 @@ public: Varray<double> & samp(int varID, int levelID, int numSets) { - auto &samp = sampData[varID][levelID]; - auto &var1 = varsData1[varID][levelID]; + const auto &sampData = sampsData[varID][levelID]; + const auto &varData1 = varsData1[varID][levelID]; - vsamp.resize(var1.size); - if (!samp.empty()) - vsamp = samp.vec_d; + vsamp.resize(varData1.size); + if (!sampData.empty()) + vsamp = sampData.vec_d; else ranges::fill(vsamp, (double) numSets); @@ -249,32 +249,31 @@ public: void add_field(const Field &field, int varID, int levelID, int numSets) { - auto &samp = sampData[varID][levelID]; - auto &var1 = varsData1[varID][levelID]; - auto &var2 = varsData2[varID][levelID]; + auto &sampData = sampsData[varID][levelID]; + auto &varData1 = varsData1[varID][levelID]; + auto &varData2 = varsData2[varID][levelID]; - add_field_kernel(field, samp, var1, var2, numSets); + add_field_kernel(field, sampData, varData1, varData2, numSets); } void set_missval(int varID, int levelID, int numSets, double vfraction) { - const auto &samp = sampData[varID][levelID]; - auto &var2 = varsData2[varID][levelID]; - if (!samp.empty()) set_missval(var2, samp, numSets, vfraction); + const auto &sampData = sampsData[varID][levelID]; + if (!sampData.empty()) set_missval(varsData2[varID][levelID], sampData, numSets, vfraction); } void process(int varID, int levelID, int numSets) { - process_kernel(sampData[varID][levelID], varsData1[varID][levelID], varsData2[varID][levelID], numSets); + process_kernel(sampsData[varID][levelID], varsData1[varID][levelID], varsData2[varID][levelID], numSets); } }; class StepStat3D : public StepStatBase { private: - FieldVector3D sampData; + FieldVector3D sampsData; FieldVector3D varsData1; FieldVector3D varsData2; int m_dimlen0{ 0 }; @@ -284,7 +283,7 @@ public: set_dimlen0(int dimlen0) { m_dimlen0 = dimlen0; - sampData.resize(dimlen0); + sampsData.resize(dimlen0); varsData1.resize(dimlen0); varsData2.resize(dimlen0); } @@ -293,7 +292,7 @@ public: alloc(int dim0, const VarList &varList, int VARS_MEMTYPE) { auto var2needed = (lvarstd || lrange || lminidx || lmaxidx); - field2D_init(sampData[dim0], varList); + field2D_init(sampsData[dim0], varList); field2D_init(varsData1[dim0], varList, FIELD_VEC | VARS_MEMTYPE); field2D_init(varsData2[dim0], varList, var2needed ? FIELD_VEC : 0); } @@ -301,13 +300,13 @@ public: FieldVector2D & samp(int dim0) { - return sampData[dim0]; + return sampsData[dim0]; } Field & samp(int dim0, int varID, int levelID) { - return sampData[dim0][varID][levelID]; + return sampsData[dim0][varID][levelID]; } FieldVector2D & @@ -337,17 +336,17 @@ public: void add_field(const Field &field, int dim0, int varID, int levelID, int numSets) { - auto &samp = sampData[dim0][varID][levelID]; - auto &var1 = varsData1[dim0][varID][levelID]; - auto &var2 = varsData2[dim0][varID][levelID]; + auto &sampData = sampsData[dim0][varID][levelID]; + auto &varData1 = varsData1[dim0][varID][levelID]; + auto &varData2 = varsData2[dim0][varID][levelID]; - add_field_kernel(field, samp, var1, var2, numSets); + add_field_kernel(field, sampData, varData1, varData2, numSets); } void process(int dim0, int varID, int levelID, int numSets) { - process_kernel(sampData[dim0][varID][levelID], varsData1[dim0][varID][levelID], varsData2[dim0][varID][levelID], numSets); + process_kernel(sampsData[dim0][varID][levelID], varsData1[dim0][varID][levelID], varsData2[dim0][varID][levelID], numSets); } }; diff --git a/src/cdo_varlist.cc b/src/cdo_varlist.cc index e902837db611be6c3036fa441b6cb0901946a07c..03d350d33dd8405ce03fecd4c9eb7d03fa1958dc 100644 --- a/src/cdo_varlist.cc +++ b/src/cdo_varlist.cc @@ -211,7 +211,6 @@ varList_map(const VarList &varList1, const VarList &varList2, MapFlag mapFlag, s { auto cmpFlag{ CmpVarList::All }; auto numVars1 = varList1.numVars(); - auto numVars2 = varList2.numVars(); if (mapFlag == MapFlag::Right) { @@ -230,6 +229,7 @@ varList_map(const VarList &varList1, const VarList &varList2, MapFlag mapFlag, s { for (const auto &var1 : varList1.vars) { + auto numVars2 = varList2.numVars(); int varID2; for (varID2 = 0; varID2 < numVars2; ++varID2) { diff --git a/src/expr.cc b/src/expr.cc index cfb88abf7797d8bfaae72e983d035e05efa480f1..dbc846b1d00b7bf892fec84a720b8b0abf0bec86 100644 --- a/src/expr.cc +++ b/src/expr.cc @@ -278,8 +278,6 @@ expr_con_var(int init, int oper, const nodeType *p1, const nodeType *p2) auto datatype = p2->param.datatype; auto missval2 = p2->param.missval; - auto n = ngp * nlev; - auto p = new nodeType; p->type = NodeEnum::typeVar; @@ -290,6 +288,7 @@ expr_con_var(int init, int oper, const nodeType *p1, const nodeType *p2) if (!init) { + auto n = ngp * nlev; p->param.data = new double[n]; auto odat = p->param.data; const auto idat = p2->param.data; @@ -313,8 +312,6 @@ expr_var_con(int init, int oper, const nodeType *p1, const nodeType *p2) auto datatype = p1->param.datatype; auto missval1 = p1->param.missval; - auto n = ngp * nlev; - auto p = new nodeType; p->type = NodeEnum::typeVar; @@ -325,6 +322,7 @@ expr_var_con(int init, int oper, const nodeType *p1, const nodeType *p2) if (!init) { + auto n = ngp * nlev; p->param.data = new double[n]; auto odat = p->param.data; const auto idat = p1->param.data; @@ -894,8 +892,6 @@ func_con_var(int init, int funcID, const nodeType *p1, const nodeType *p2) auto hasMV = (p2->param.numMissVals > 0); auto missval2 = p2->param.missval; - auto n = ngp * nlev; - auto p = new nodeType; p->type = NodeEnum::typeVar; @@ -906,6 +902,7 @@ func_con_var(int init, int funcID, const nodeType *p1, const nodeType *p2) if (!init) { + auto n = ngp * nlev; p->param.data = new double[n]; auto odat = p->param.data; const auto idat = p2->param.data; @@ -931,8 +928,6 @@ func_var_con(int init, int funcID, const nodeType *p1, const nodeType *p2) auto hasMV = (p1->param.numMissVals > 0); auto missval1 = p1->param.missval; - auto n = ngp * nlev; - auto p = new nodeType; p->type = NodeEnum::typeVar; @@ -943,6 +938,7 @@ func_var_con(int init, int funcID, const nodeType *p1, const nodeType *p2) if (!init) { + auto n = ngp * nlev; p->param.data = new double[n]; auto odat = p->param.data; const auto idat = p1->param.data; diff --git a/src/field.cc b/src/field.cc index 8101d623076aff499e3da04540f7d9e0138af957..4c8a53bb5533c23225325680fe1b340ea9ff8c8f 100644 --- a/src/field.cc +++ b/src/field.cc @@ -116,7 +116,7 @@ field_ncopy(size_t n, const Field &fieldIn, Field &fieldOut) fieldOut.numMissVals = fieldIn.numMissVals; - auto func = [&](auto &v1, auto &v2) { varray_copy(n, v1, v2); }; + auto func = [&](const auto &v1, auto &v2) { varray_copy(n, v1, v2); }; field_operation2(func, fieldIn, fieldOut); } @@ -151,7 +151,7 @@ field_add(Field &field1, const Field3D &field2, int levelID) { auto size = field1.gridsize * field1.nwpv; auto offset = levelID * size; - auto func = [&](auto &v1, auto &v2) { + auto func = [&](auto &v1, const auto &v2) { for (size_t i = 0; i < size; ++i) v1[i] += v2[offset + i]; }; field_operation2(func, field1, field2); @@ -188,7 +188,7 @@ public: size_t field_num_NANs(const Field &field) { - auto func = [&](auto &v, auto n) { + auto func = [&](const auto &v, auto n) { size_t numNANs = 0; #ifdef HAVE_OPENMP4 #pragma omp parallel for simd if (n > cdoMinLoopSize) default(shared) schedule(static) reduction(+ : numNANs) @@ -202,7 +202,7 @@ field_num_NANs(const Field &field) size_t field_num_mv(Field &field) { - auto func = [](auto &v, auto n, auto mv) { return varray_num_mv(n, v, mv); }; + auto func = [](const auto &v, auto n, auto mv) { return varray_num_mv(n, v, mv); }; field.numMissVals = field_operation(func, field, field.size, field.missval); return field.numMissVals; } @@ -210,56 +210,56 @@ field_num_mv(Field &field) MinMax field_min_max(const Field &field) { - auto func = [](auto &v) { return varray_min_max(v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_min_max_mv(n, v, mv); }; + auto func = [](const auto &v) { return varray_min_max(v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_min_max_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field); } double field_min(const Field &field) { - auto func = [](auto &v, auto n) { return varray_min(n, v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_min_mv(n, v, mv); }; + auto func = [](const auto &v, auto n) { return varray_min(n, v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_min_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field, field.size); } double field_max(const Field &field) { - auto func = [](auto &v, auto n) { return varray_max(n, v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_max_mv(n, v, mv); }; + auto func = [](const auto &v, auto n) { return varray_max(n, v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_max_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field, field.size); } double field_range(const Field &field) { - auto func = [](auto &v, auto n) { return varray_range(n, v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_range_mv(n, v, mv); }; + auto func = [](const auto &v, auto n) { return varray_range(n, v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_range_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field, field.size); } double field_sum(const Field &field) { - auto func = [](auto &v, auto n) { return varray_sum(n, v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_sum_mv(n, v, mv); }; + auto func = [](const auto &v, auto n) { return varray_sum(n, v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_sum_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field, field.size); } double field_mean(const Field &field) { - auto func = [](auto &v, auto n) { return varray_mean(n, v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_mean_mv(n, v, mv); }; + auto func = [](const auto &v, auto n) { return varray_mean(n, v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_mean_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field, field.size); } double field_meanw(const Field &field) { - auto func = [](auto &v, auto n, auto mv, auto &w) { return varray_weighted_mean(n, v, w, mv); }; - auto func_mv = [](auto &v, auto n, auto mv, auto &w) { return varray_weighted_mean_mv(n, v, w, mv); }; + auto func = [](const auto &v, auto n, auto mv, const auto &w) { return varray_weighted_mean(n, v, w, mv); }; + auto func_mv = [](const auto &v, auto n, auto mv, const auto &w) { return varray_weighted_mean_mv(n, v, w, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval, field.weightv) : field_operation(func, field, field.size, field.missval, field.weightv); } @@ -267,16 +267,16 @@ field_meanw(const Field &field) double field_avg(const Field &field) { - auto func = [](auto &v, auto n) { return varray_mean(n, v); }; - auto func_mv = [](auto &v, auto n, auto mv) { return varray_avg_mv(n, v, mv); }; + auto func = [](const auto &v, auto n) { return varray_mean(n, v); }; + auto func_mv = [](const auto &v, auto n, auto mv) { return varray_avg_mv(n, v, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval) : field_operation(func, field, field.size); } double field_avgw(const Field &field) { - auto func = [](auto &v, auto n, auto mv, auto &w) { return varray_weighted_mean(n, v, w, mv); }; - auto func_mv = [](auto &v, auto n, auto mv, auto &w) { return varray_weighted_avg_mv(n, v, w, mv); }; + auto func = [](const auto &v, auto n, auto mv, const auto &w) { return varray_weighted_mean(n, v, w, mv); }; + auto func_mv = [](const auto &v, auto n, auto mv, const auto &w) { return varray_weighted_avg_mv(n, v, w, mv); }; return field.numMissVals ? field_operation(func_mv, field, field.size, field.missval, field.weightv) : field_operation(func, field, field.size, field.missval, field.weightv); } @@ -284,56 +284,60 @@ field_avgw(const Field &field) double field_var(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv) { return varray_var(n, v, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv) { return varray_var(n, v, numMissVals, mv); }; return field_operation(func, field, field.size, field.numMissVals, field.missval); } double field_var1(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv) { return varray_var_1(n, v, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv) { return varray_var_1(n, v, numMissVals, mv); }; return field_operation(func, field, field.size, field.numMissVals, field.missval); } double field_skew(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv) { return varray_skew(n, v, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv) { return varray_skew(n, v, numMissVals, mv); }; return field_operation(func, field, field.size, field.numMissVals, field.missval); } double field_kurt(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv) { return varray_kurt(n, v, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv) { return varray_kurt(n, v, numMissVals, mv); }; return field_operation(func, field, field.size, field.numMissVals, field.missval); } double field_median(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv) { return varray_median(n, v, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv) { return varray_median(n, v, numMissVals, mv); }; return field_operation(func, field, field.size, field.numMissVals, field.missval); } double field_count(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv) { return varray_count(n, v, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv) { return varray_count(n, v, numMissVals, mv); }; return field_operation(func, field, field.size, field.numMissVals, field.missval); } double field_varw(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv, auto &w) { return varray_weighted_var(n, v, w, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv, const auto &w) { + return varray_weighted_var(n, v, w, numMissVals, mv); + }; return field_operation(func, field, field.size, field.numMissVals, field.missval, field.weightv); } double field_var1w(const Field &field) { - auto func = [](auto &v, auto n, auto numMissVals, auto mv, auto &w) { return varray_weighted_var_1(n, v, w, numMissVals, mv); }; + auto func = [](const auto &v, auto n, auto numMissVals, auto mv, const auto &w) { + return varray_weighted_var_1(n, v, w, numMissVals, mv); + }; return field_operation(func, field, field.size, field.numMissVals, field.missval, field.weightv); } diff --git a/src/field2.cc b/src/field2.cc index 34715b4116fd731ba1317a6e9c06f54a8fc58071..1f271594db83c4657a772b049e79a3cf8beffab4 100644 --- a/src/field2.cc +++ b/src/field2.cc @@ -82,7 +82,7 @@ varray2_arith(Varray<T1> &v1, const Varray<T2> &v2, size_t n, FUNC func) for (size_t i = 0; i < n; ++i) { v1[i] = func(v1[i], v2[i]); } } -auto varray2_func = [](auto &v1, auto &v2, size_t n, auto arith_func) { varray2_arith(v1, v2, n, arith_func); }; +auto varray2_func = [](auto &v1, const auto &v2, size_t n, auto arith_func) { varray2_arith(v1, v2, n, arith_func); }; template <typename T1, typename T2, typename FUNC> static void @@ -113,7 +113,7 @@ varray2_arith_mv(Varray<T1> &v1, const Varray<T2> &v2, size_t n, double missval1 } } -auto varray2_func_mv = [](auto &v1, auto &v2, size_t n, double mv1, double mv2, auto arith_mv_func) { +auto varray2_func_mv = [](auto &v1, const auto &v2, size_t n, double mv1, double mv2, auto arith_mv_func) { varray2_arith_mv(v1, v2, n, mv1, mv2, arith_mv_func); }; @@ -156,7 +156,7 @@ field2_vinit(Field &field1, const Field &field2, int vinit) for (size_t i = 0; i < n; ++i) v1[i] = (fp_is_equal(v2[i], missval)) ? 0 : vinit; }; */ - auto func = [&](auto &v1, auto &v2, size_t n, double mv) { field2_vinit(v1, v2, n, mv, vinit); }; + auto func = [&](auto &v1, const auto &v2, size_t n, double mv) { field2_vinit(v1, v2, n, mv, vinit); }; field_operation2(func, field1, field2, field2.size, field2.missval); field1.numMissVals = field2.numMissVals; @@ -177,7 +177,7 @@ field2_vincr(Field &field1, const Field &field2, int vincr) { if (field1.size != field2.size) cdo_abort("Fields have different size (%s)", __func__); - auto func = [&](auto &v1, auto &v2, size_t n, double mv) { field2_vincr(v1, v2, n, mv, vincr); }; + auto func = [&](auto &v1, const auto &v2, size_t n, double mv) { field2_vincr(v1, v2, n, mv, vincr); }; field_operation2(func, field1, field2, field2.size, field2.missval); field1.numMissVals = field2.numMissVals; @@ -386,7 +386,7 @@ field2_div(Field &field1, const Field &field2) } else { - auto func = [](auto &v1, auto &v2, size_t n, double mv) { varray2_div(v1, v2, n, mv); }; + auto func = [](auto &v1, const auto &v2, size_t n, double mv) { varray2_div(v1, v2, n, mv); }; field_operation2(func, field1, field2, field1.size, field1.missval); field_num_mv(field1); } @@ -404,15 +404,15 @@ field2_atan2(Field &field1, const Field &field2) void field2_set_miss(Field &field1, const Field &field2) { - auto missval1 = field1.missval; - auto &array1 = field1.vec_d; - const auto &array2 = field2.vec_d; - auto len = field1.size; if (len != field2.size) cdo_abort("Fields have different size (%s)", __func__); if (field1.numMissVals) { + auto missval1 = field1.missval; + auto &array1 = field1.vec_d; + const auto &array2 = field2.vec_d; + for (size_t i = 0; i < len; ++i) array1[i] = fp_is_equal(array1[i], missval1) ? array2[i] : array1[i]; field_num_mv(field1); @@ -495,7 +495,7 @@ field2_minidx(Field &field1, Field &field2, const Field &field3, int idx) { if (field1.size != field3.size) cdo_abort("Fields have different size (%s)", __func__); if (field2.size != field3.size) cdo_abort("Fields have different size (%s)", __func__); - auto func = [&](auto &v3) { field2_minidx(field3.numMissVals, field3.size, field3.missval, field1, field2, v3, idx); }; + auto func = [&](const auto &v3) { field2_minidx(field3.numMissVals, field3.size, field3.missval, field1, field2, v3, idx); }; field_operation(func, field3); } @@ -537,7 +537,7 @@ field2_maxidx(Field &field1, Field &field2, const Field &field3, int idx) { if (field1.size != field3.size) cdo_abort("Fields have different size (%s)", __func__); if (field2.size != field3.size) cdo_abort("Fields have different size (%s)", __func__); - auto func = [&](auto &v3) { field2_maxidx(field3.numMissVals, field3.size, field3.missval, field1, field2, v3, idx); }; + auto func = [&](const auto &v3) { field2_maxidx(field3.numMissVals, field3.size, field3.missval, field1, field2, v3, idx); }; field_operation(func, field3); } @@ -790,7 +790,7 @@ field2_count(Field &field1, const Field &field2) if (field1.numMissVals || field2.numMissVals) { - auto func = [](auto &v1, auto &v2, size_t n, double mv1, double mv2) { varray2_count_mv(v1, v2, n, mv1, mv2); }; + auto func = [](auto &v1, const auto &v2, size_t n, double mv1, double mv2) { varray2_count_mv(v1, v2, n, mv1, mv2); }; field_operation2(func, field1, field2, field1.size, field1.missval, field2.missval); field_num_mv(field1); } diff --git a/src/field_meridional.cc b/src/field_meridional.cc index b56d6e66e0f367f2dbeab2ad69aae4b78db8558f..06d03927f914bb9f66b938a5d1ccb6a22ee5c735 100644 --- a/src/field_meridional.cc +++ b/src/field_meridional.cc @@ -38,7 +38,7 @@ meridional_kernel_1(const Field &field1, Field &field2, funcType1 func, funcType for (size_t i = 0; i < nx; ++i) { - auto func_copy_meridional = [&](auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; + auto func_copy_meridional = [&](const auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; field_operation(func_copy_meridional, field1); auto result = numMissVals ? funcMV(ny, v, missval) : func(ny, v); @@ -63,7 +63,7 @@ meridional_kernel_2(const Field &field1, Field &field2, funcType2 func, funcType for (size_t i = 0; i < nx; ++i) { varray_copy_meridional(i, nx, ny, field1.weightv, w); - auto func_copy_meridional = [&](auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; + auto func_copy_meridional = [&](const auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; field_operation(func_copy_meridional, field1); auto result = numMissVals ? funcMV(ny, v, w, missval) : func(ny, v, w, missval); @@ -88,7 +88,7 @@ meridional_kernel_3(const Field &field1, Field &field2, funcType3 func) for (size_t i = 0; i < nx; ++i) { varray_copy_meridional(i, nx, ny, field1.weightv, w); - auto func_copy_meridional = [&](auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; + auto func_copy_meridional = [&](const auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; field_operation(func_copy_meridional, field1); auto result = func(ny, v, w, numMissVals, missval); @@ -112,7 +112,7 @@ meridional_kernel_4(const Field &field1, Field &field2, funcType4 func) for (size_t i = 0; i < nx; ++i) { - auto func_copy_meridional = [&](auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; + auto func_copy_meridional = [&](const auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; field_operation(func_copy_meridional, field1); auto numMissval = ny - varray_count(ny, v, numMissVals, missval); @@ -266,7 +266,7 @@ meridional_pctl(const Field &field1, Field &field2, double pn) { if (ny > 0) { - auto func_copy_meridional = [&](auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; + auto func_copy_meridional = [&](const auto &v1) { varray_copy_meridional(i, nx, ny, v1, v); }; field_operation(func_copy_meridional, field1); field2.vec_d[i] = percentile(v.data(), ny, pn); diff --git a/src/field_trend.cc b/src/field_trend.cc index 20afba06f529a693bcb0d4db50c8d8ea4f724ec6..c27770e0035decfae9ef315b6101d6672834d74d 100644 --- a/src/field_trend.cc +++ b/src/field_trend.cc @@ -53,7 +53,7 @@ void calc_trend_sum(FieldVector3D &work, const Field &field, double zj, int varID, int levelID) { auto hasMissvals = (field.numMissVals > 0); - auto func = [&](auto &v) { calc_trend_sum(work, hasMissvals, field.size, v, field.missval, zj, varID, levelID); }; + auto func = [&](const auto &v) { calc_trend_sum(work, hasMissvals, field.size, v, field.missval, zj, varID, levelID); }; field_operation(func, field); } diff --git a/src/field_zonal.cc b/src/field_zonal.cc index d7d1d3498239c456b40a31874a67b978863e9f62..e039f2bc6f8985e400d34f350ec2fc14f667b7ed 100644 --- a/src/field_zonal.cc +++ b/src/field_zonal.cc @@ -24,7 +24,7 @@ varray_copy_zonal(size_t offset, size_t nx, const Varray<T> &v1, Varray<double> static void copy_latitude_row(size_t offset, size_t nx, const Field &field1, Varray<double> &v) { - auto func = [&](auto &v1) { varray_copy_zonal(offset, nx, v1, v); }; + auto func = [&](const auto &v1) { varray_copy_zonal(offset, nx, v1, v); }; field_operation(func, field1); } diff --git a/src/param_conversion.cc b/src/param_conversion.cc index 481bd0f89c963def9ff64976b72904ef476821d7..07906372bcbfb7aee2a01a1697378cf8c1d7b09e 100644 --- a/src/param_conversion.cc +++ b/src/param_conversion.cc @@ -72,7 +72,7 @@ parameter_to_double(const char *const cstring) { char *endptr = nullptr; auto fval = strtod(cstring, &endptr); - if (*endptr && *endptr == 'f') endptr++; + if (*endptr == 'f') endptr++; if (*endptr) parameter_error("Float", cstring, endptr); return fval; } diff --git a/src/process.cc b/src/process.cc index 2f91d8fb5edd5a84ae8ff0ec7235c621d37d99de..2e7a48f8e074a53dc3d35333e3af1a798ea8f4d8 100644 --- a/src/process.cc +++ b/src/process.cc @@ -288,7 +288,7 @@ Process::set_obase(const std::string &obase) m_obase = obase; } // TODO into cc -const std::string +const std::string & Process::get_obase() { return m_obase; diff --git a/src/process.h b/src/process.h index 544a66692deddfdd5fa2d5117d55c20a6e556a96..dd5eba310a008eb1edf357e256ae161636c93156 100644 --- a/src/process.h +++ b/src/process.h @@ -132,7 +132,7 @@ public: size_t get_oper_argc(); std::string get_argv(int idx); - const std::string get_obase(); + const std::string &get_obase(); void set_obase(const std::string &obase); int get_id(); diff --git a/src/remap_bicubic.cc b/src/remap_bicubic.cc index 786f8ae6276e8cb02c433da994b4b599c9d834db..d85c0f230a610ed07188ab90836a0cbfc7abfa03 100644 --- a/src/remap_bicubic.cc +++ b/src/remap_bicubic.cc @@ -339,7 +339,8 @@ remap_bicubic(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double srcMissva void remap_bicubic(RemapSearch &remapSearch, const Field &field1, Field &field2) { - auto func - = [&](auto &v1, auto &v2, double missval, size_t numMissVals) { remap_bicubic(v1, v2, missval, numMissVals, remapSearch); }; + auto func = [&](const auto &v1, auto &v2, double missval, size_t numMissVals) { + remap_bicubic(v1, v2, missval, numMissVals, remapSearch); + }; field_operation2(func, field1, field2, field1.missval, field1.numMissVals); } diff --git a/src/remap_bilinear.cc b/src/remap_bilinear.cc index 9f6aa88d32f634b705090a158f28f044cf81d9eb..3cf18dc47b09fcc20de5d2b9718d34c7f5f3e57d 100644 --- a/src/remap_bilinear.cc +++ b/src/remap_bilinear.cc @@ -455,7 +455,8 @@ remap_bilinear(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double srcMissv void remap_bilinear(RemapSearch &remapSearch, const Field &field1, Field &field2) { - auto func - = [&](auto &v1, auto &v2, double missval, size_t numMissVals) { remap_bilinear(v1, v2, missval, numMissVals, remapSearch); }; + auto func = [&](const auto &v1, auto &v2, double missval, size_t numMissVals) { + remap_bilinear(v1, v2, missval, numMissVals, remapSearch); + }; field_operation2(func, field1, field2, field1.missval, field1.numMissVals); } diff --git a/src/remap_conserv.cc b/src/remap_conserv.cc index 61aadba90b8c0518590423ccac567ce3d64dee4b..5dbf04c97055f311d2a2678c9ca5efc725d573ca 100644 --- a/src/remap_conserv.cc +++ b/src/remap_conserv.cc @@ -831,7 +831,7 @@ remap_conserv(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double srcMissva void remap_conserv(NormOpt normOpt, RemapSearch &remapSearch, const Field &field1, Field &field2) { - auto func = [&](auto &v1, auto &v2, double missval, size_t numMissVals) { + auto func = [&](const auto &v1, auto &v2, double missval, size_t numMissVals) { remap_conserv(v1, v2, missval, numMissVals, normOpt, remapSearch); }; field_operation2(func, field1, field2, field1.missval, field1.numMissVals); @@ -1052,6 +1052,6 @@ remap_zonal_mean(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double srcMis void remap_zonal_mean(const Varray2D<size_t> &remapIndices, const Varray2D<double> &remapWeights, const Field &field1, Field &field2) { - auto func = [&](auto &v1, auto &v2, double missval) { remap_zonal_mean(v1, v2, missval, remapIndices, remapWeights); }; + auto func = [&](const auto &v1, auto &v2, double missval) { remap_zonal_mean(v1, v2, missval, remapIndices, remapWeights); }; field_operation2(func, field1, field2, field1.missval); } diff --git a/src/remap_distwgt.cc b/src/remap_distwgt.cc index f729bcec57f259f9916cd1e6fc0ded435e9504bd..171093550f2e9959c9cd27eab30340d25f774a66 100644 --- a/src/remap_distwgt.cc +++ b/src/remap_distwgt.cc @@ -159,7 +159,7 @@ remap_distwgt(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double srcMissva void remap_distwgt(size_t numNeighbors, RemapSearch &remapSearch, const Field &field1, Field &field2) { - auto func = [&](auto &v1, auto &v2, double missval, size_t numMissVals) { + auto func = [&](const auto &v1, auto &v2, double missval, size_t numMissVals) { remap_distwgt(v1, v2, missval, numMissVals, numNeighbors, remapSearch); }; field_operation2(func, field1, field2, field1.missval, field1.numMissVals); diff --git a/src/remap_vars.cc b/src/remap_vars.cc index 66917e90e7d8ebd2d7f1cfde7d3c3d303cfccf11..579f150b7402c1218743300391ec3ac30682a405 100644 --- a/src/remap_vars.cc +++ b/src/remap_vars.cc @@ -240,7 +240,7 @@ remap(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double tgtMissval, size_ void remap_field(Field &field2, double missval, size_t gridsize2, const RemapVars &rv, const Field &field1, RemapGradients &gradients) { - auto func = [&](auto &v1, auto &v2) { remap(v1, v2, missval, gridsize2, rv, gradients); }; + auto func = [&](const auto &v1, auto &v2) { remap(v1, v2, missval, gridsize2, rv, gradients); }; field_operation2(func, field1, field2); } @@ -393,7 +393,7 @@ remap_laf(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double tgtMissval, s void remap_laf(Field &field2, double missval, size_t gridsize2, const RemapVars &rv, const Field &field1) { - auto func = [&](auto &v1, auto &v2) { remap_laf(v1, v2, missval, gridsize2, rv); }; + auto func = [&](const auto &v1, auto &v2) { remap_laf(v1, v2, missval, gridsize2, rv); }; field_operation2(func, field1, field2); } @@ -492,7 +492,7 @@ remap_avg(const Varray<T1> &srcArray, Varray<T2> &tgtArray, double tgtMissval, s void remap_avg(Field &field2, double missval, size_t gridsize2, const RemapVars &rv, const Field &field1) { - auto func = [&](auto &v1, auto &v2) { remap_avg(v1, v2, missval, gridsize2, rv); }; + auto func = [&](const auto &v1, auto &v2) { remap_avg(v1, v2, missval, gridsize2, rv); }; field_operation2(func, field1, field2); } diff --git a/src/remaplib.cc b/src/remaplib.cc index 1e7d3ab52dcada047d11bc2a3cbe4049dd28b1e7..63a37046753f7cd3d3b8b3ed2b248c9704c019b5 100644 --- a/src/remaplib.cc +++ b/src/remaplib.cc @@ -948,7 +948,7 @@ remap_stat(const Varray<T1> &array1, const Varray<T2> &array2, double missval, i void remap_stat(int remapOrder, RemapGrid &srcGrid, RemapGrid &tgtGrid, RemapVars &rv, const Field &field1, const Field &field2) { - auto func = [&](auto &v1, auto &v2, double mv1) { remap_stat(v1, v2, mv1, remapOrder, srcGrid, tgtGrid, rv); }; + auto func = [&](const auto &v1, auto &v2, double mv1) { remap_stat(v1, v2, mv1, remapOrder, srcGrid, tgtGrid, rv); }; field_operation2(func, field1, field2, field1.missval); } @@ -1190,6 +1190,6 @@ template void remap_set_mask(const Varray<double> &v, size_t gridsize, size_t nu void remap_set_mask(const Field &field1, size_t gridsize, size_t numMissVals, double missval, Varray<int8_t> &imask) { - auto func = [&](auto &v) { remap_set_mask(v, gridsize, numMissVals, missval, imask); }; + auto func = [&](const auto &v) { remap_set_mask(v, gridsize, numMissVals, missval, imask); }; field_operation(func, field1); } diff --git a/src/util_string.h b/src/util_string.h index 410e9a387fc4dc5a8bf6e19fc72809cc37207ae1..7e8e1629b2d909b47a18302ac1b2cd372fafe928 100644 --- a/src/util_string.h +++ b/src/util_string.h @@ -52,7 +52,7 @@ string_format(const std::string &format, Args... args) auto size = static_cast<size_t>(size_s); std::unique_ptr<char[]> buf(new char[size]); std::snprintf(buf.get(), size, format.c_str(), args...); - return std::string(buf.get(), buf.get() + size - 1); // We don't want the '\0' inside + return std::string(buf.get(), static_cast<char *>(buf.get()) + size - 1); // We don't want the '\0' inside } namespace Util