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

Varsstat::set_attributes(): define missval

parent bfc1de36
No related branches found
Tags cdo-2.2.1
1 merge request!82M214003/develop
Pipeline #38578 passed
......@@ -11,7 +11,7 @@
#include "field_functions.h"
static void
checkUniqueZaxis(int vlistID)
check_unique_zaxis(int vlistID)
{
auto nzaxis = vlistNzaxis(vlistID);
auto zaxisID = vlistZaxis(vlistID, 0);
......@@ -23,7 +23,7 @@ checkUniqueZaxis(int vlistID)
}
static void
checkUniqueGridsize(int vlistID)
check_unique_gridsize(int vlistID)
{
auto ngrids = vlistNgrids(vlistID);
auto gridID = vlistGrid(vlistID, 0);
......@@ -35,13 +35,13 @@ checkUniqueGridsize(int vlistID)
}
static void
setAttributes(const VarList &varList1, int vlistID2, int varID2, int operatorID)
set_attributes(const VarList &varList1, int vlistID2, int varID2, int operatorID)
{
const auto &var0 = varList1[0];
auto paramIsEqual = true;
auto name = var0.name;
auto param = var0.param;
const int nvars = varList1.size();
int nvars = varList1.size();
for (int varID = 1; varID < nvars; ++varID)
{
if (param != varList1[varID].param || name != varList1[varID].name)
......@@ -53,6 +53,8 @@ setAttributes(const VarList &varList1, int vlistID2, int varID2, int operatorID)
if (!paramIsEqual) name = cdo_operator_name(operatorID);
cdiDefKeyString(vlistID2, varID2, CDI_KEY_NAME, name.c_str());
vlistDefVarMissval(vlistID2, varID2, var0.missval);
if (paramIsEqual)
{
if (param >= 0) vlistDefVarParam(vlistID2, varID2, param);
......@@ -62,7 +64,7 @@ setAttributes(const VarList &varList1, int vlistID2, int varID2, int operatorID)
}
static void
addOperators(void)
add_operators(void)
{
// clang-format off
cdo_operator_add("varsrange", FieldFunc_Range, 0, nullptr);
......@@ -83,7 +85,7 @@ Varsstat(void *process)
{
cdo_initialize(process);
addOperators();
add_operators();
auto operatorID = cdo_operator_id();
auto operfunc = cdo_operator_f1(operatorID);
......@@ -95,7 +97,7 @@ Varsstat(void *process)
auto lstd = (operfunc == FieldFunc_Std || operfunc == FieldFunc_Std1);
auto lvarstd = (lstd || operfunc == FieldFunc_Var || operfunc == FieldFunc_Var1);
auto lvars2 = (lvarstd || lrange);
const int divisor = (operfunc == FieldFunc_Std1 || operfunc == FieldFunc_Var1);
int divisor = (operfunc == FieldFunc_Std1 || operfunc == FieldFunc_Var1);
auto field2_stdvar_func = lstd ? field2_std : field2_var;
auto fieldc_stdvar_func = lstd ? fieldc_std : fieldc_var;
......@@ -106,11 +108,11 @@ Varsstat(void *process)
VarList varList1;
varListInit(varList1, vlistID1);
checkUniqueZaxis(vlistID1);
check_unique_zaxis(vlistID1);
auto zaxisID = vlistZaxis(vlistID1, 0);
auto nlevels = zaxisInqSize(zaxisID);
checkUniqueGridsize(vlistID1);
check_unique_gridsize(vlistID1);
auto gridID = vlistGrid(vlistID1, 0);
auto gridsize = gridInqSize(gridID);
......@@ -125,7 +127,7 @@ Varsstat(void *process)
vlistDefNtsteps(vlistID2, vlistNtsteps(vlistID1));
auto varID2 = vlistDefVar(vlistID2, gridID, zaxisID, timetype);
setAttributes(varList1, vlistID2, varID2, operatorID);
set_attributes(varList1, vlistID2, varID2, operatorID);
auto taxisID1 = vlistInqTaxis(vlistID1);
auto taxisID2 = taxisDuplicate(taxisID1);
......
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