Skip to content
Snippets Groups Projects

M214003/develop

Merged Uwe Schulzweida requested to merge m214003/develop into develop
7 files
+ 430
200
Compare changes
  • Side-by-side
  • Inline
Files
7
+ 15
16
@@ -46,7 +46,7 @@ struct EnsstatFile
struct EnsstatArg
{
int t;
int t{ 0 };
int varID[2];
int levelID[2];
CdoStreamID streamID2;
@@ -155,7 +155,7 @@ addOperators(void)
class ModuleEnsstat
{
cdo::Task *task;
cdo::Task task;
int nrecs0;
std::vector<EnsstatFile> ef;
@@ -178,7 +178,6 @@ public:
init(void *process)
{
cdo_initialize(process);
task = Options::CDO_task ? new cdo::Task : nullptr;
addOperators();
@@ -251,11 +250,9 @@ public:
count2.resize(gridsizemax);
for (int varID = 0; varID < nvars; ++varID)
{
auto name = ef[0].varList[varID].name + "_count";
auto gridID = ef[0].varList[varID].gridID;
auto zaxisID = ef[0].varList[varID].zaxisID;
auto timetype = ef[0].varList[varID].timetype;
auto cvarID = vlistDefVar(vlistID2, gridID, zaxisID, timetype);
auto &var = ef[0].varList[varID];
auto name = var.name + "_count";
auto cvarID = vlistDefVar(vlistID2, var.gridID, var.zaxisID, var.timetype);
cdiDefKeyString(vlistID2, cvarID, CDI_KEY_NAME, name.c_str());
vlistDefVarDatatype(vlistID2, cvarID, CDI_DATATYPE_INT16);
if (cvarID != (varID + nvars)) cdo_abort("Internal error, varIDs do not match!");
@@ -276,7 +273,6 @@ public:
ensstatArg.lpctl = lpctl;
ensstatArg.withCountData = withCountData;
ensstatArg.nvars = nvars;
ensstatArg.t = 0;
}
void
@@ -335,15 +331,21 @@ public:
ensstatArg.efData = ef.data();
ensstatArg.varID[t] = varID;
ensstatArg.levelID[t] = levelID;
ensstatArg.t = t;
if (Options::CDO_task)
{
task->start(ensstat_func, &ensstatArg);
task->wait();
// t = !t;
task.wait();
task.start(ensstat_func, &ensstatArg);
t = !t;
}
else
{
ensstat_func(&ensstatArg);
}
else { ensstat_func(&ensstatArg); }
}
if (Options::CDO_task) task.wait();
tsID++;
}
while (nrecs0 > 0);
@@ -359,8 +361,6 @@ public:
cdo_stream_close(streamID2);
if (task) delete task;
cdo_finish();
}
};
@@ -369,7 +369,6 @@ void *
Ensstat(void *process)
{
ModuleEnsstat ensstat;
ensstat.init(process);
ensstat.run();
ensstat.close();
Loading