Commit d093d233 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Merge declaration and definition.

parent 8fc44741
......@@ -171,7 +171,7 @@ void *EOFs(void * argument)
int nlevs = 0 ;
int nmiss;
int tsID;
int varID, recID, levelID;
int varID, levelID;
int nts = 0;
int n = 0;
int grid_space = 0, time_space = 0;
......@@ -365,7 +365,7 @@ void *EOFs(void * argument)
nrecs = streamInqTimestep(streamID1, tsID);
if ( nrecs == 0 ) break;
for ( recID = 0; recID < nrecs; recID++ )
for ( int recID = 0; recID < nrecs; recID++ )
{
streamInqRecord(streamID1, &varID, &levelID);
streamReadRecord(streamID1, in, &nmiss);
......
......@@ -1427,10 +1427,6 @@ void export_e5res(const char *filename, VAR *vars, int nvars)
void *Echam5ini(void *argument)
{
int operatorID;
int operfunc;
int IMPORT_E5ML, IMPORT_E5RES;
int EXPORT_E5ML, EXPORT_E5RES;
int streamID1, streamID2 = CDI_UNDEFID;
int nrecs = 0;
int recID, varID, levelID;
......@@ -1442,13 +1438,13 @@ void *Echam5ini(void *argument)
cdoInitialize(argument);
IMPORT_E5ML = cdoOperatorAdd("import_e5ml", func_read, 0, NULL);
IMPORT_E5RES = cdoOperatorAdd("import_e5res", func_read, 0, NULL);
EXPORT_E5ML = cdoOperatorAdd("export_e5ml", func_write, 0, NULL);
EXPORT_E5RES = cdoOperatorAdd("export_e5res", func_write, 0, NULL);
int IMPORT_E5ML = cdoOperatorAdd("import_e5ml", func_read, 0, NULL);
int IMPORT_E5RES = cdoOperatorAdd("import_e5res", func_read, 0, NULL);
int EXPORT_E5ML = cdoOperatorAdd("export_e5ml", func_write, 0, NULL);
int EXPORT_E5RES = cdoOperatorAdd("export_e5res", func_write, 0, NULL);
operatorID = cdoOperatorID();
operfunc = cdoOperatorF1(operatorID);
int operatorID = cdoOperatorID();
int operfunc = cdoOperatorF1(operatorID);
if ( operatorID == EXPORT_E5ML && processSelf() != 0 )
cdoAbort("This operator can't be linked with other operators!");
......
......@@ -29,16 +29,8 @@
void *Enlarge(void *argument)
{
int i, index;
int recID, nrecs;
int varID, levelID;
int nmiss;
int gridsize1;
int gridID1;
int xsize1, ysize1;
int ix, iy;
int linfo = TRUE;
double missval;
int nrecs;
bool linfo = true;
cdoInitialize(argument);
......@@ -65,7 +57,7 @@ void *Enlarge(void *argument)
cdoAbort("Gridsize of input stream is greater than new gridsize!");
int ngrids = vlistNgrids(vlistID1);
for ( index = 0; index < ngrids; index++ )
for ( int index = 0; index < ngrids; index++ )
{
vlistChangeGridIndex(vlistID2, index, gridID2);
}
......@@ -84,16 +76,17 @@ void *Enlarge(void *argument)
streamDefTimestep(streamID2, tsID);
for ( recID = 0; recID < nrecs; recID++ )
for ( int recID = 0; recID < nrecs; recID++ )
{
int varID, levelID, nmiss;
streamInqRecord(streamID1, &varID, &levelID);
streamReadRecord(streamID1, array1, &nmiss);
missval = vlistInqVarMissval(vlistID1, varID);
gridID1 = vlistInqVarGrid(vlistID1, varID);
xsize1 = gridInqXsize(gridID1);
ysize1 = gridInqYsize(gridID1);
gridsize1 = gridInqSize(gridID1);
double missval = vlistInqVarMissval(vlistID1, varID);
int gridID1 = vlistInqVarGrid(vlistID1, varID);
int xsize1 = gridInqXsize(gridID1);
int ysize1 = gridInqYsize(gridID1);
int gridsize1 = gridInqSize(gridID1);
if ( xsize1 == 0 ) xsize1 = 1;
if ( ysize1 == 0 ) ysize1 = 1;
......@@ -104,11 +97,11 @@ void *Enlarge(void *argument)
if ( linfo )
{
cdoPrint("Enlarge zonal");
linfo = FALSE;
linfo = false;
}
for ( iy = 0; iy < ysize2; iy++ )
for ( ix = 0; ix < xsize2; ix++ )
for ( int iy = 0; iy < ysize2; iy++ )
for ( int ix = 0; ix < xsize2; ix++ )
array2[ix+iy*xsize2] = array1[iy];
if ( nmiss ) nmiss *= xsize2;
......@@ -118,11 +111,11 @@ void *Enlarge(void *argument)
if ( linfo )
{
cdoPrint("Enlarge meridional");
linfo = FALSE;
linfo = false;
}
for ( iy = 0; iy < ysize2; iy++ )
for ( ix = 0; ix < xsize2; ix++ )
for ( int iy = 0; iy < ysize2; iy++ )
for ( int ix = 0; ix < xsize2; ix++ )
array2[ix+iy*xsize2] = array1[ix];
if ( nmiss ) nmiss *= ysize2;
......@@ -130,7 +123,7 @@ void *Enlarge(void *argument)
else
{
memcpy(array2, array1, gridsize1*sizeof(double));
for ( i = gridsize1; i < gridsize2; i++ )
for ( int i = gridsize1; i < gridsize2; i++ )
{
array2[i] = array1[gridsize1-1];
}
......
......@@ -31,37 +31,30 @@
static
void gen_index(int gridID1, int gridID2, int *index)
{
int nlat1, nlon1;
int nlat2, nlon2;
int gridtype1, gridtype2;
int gridsize2;
int i, j, k, i1, i2;
int *xindex = NULL, *yindex = NULL;
double *xvals1 = NULL, *yvals1 = NULL;
double *xvals2 = NULL, *yvals2 = NULL;
int i1;
gridtype1 = gridInqType(gridID1);
gridtype2 = gridInqType(gridID2);
int gridtype1 = gridInqType(gridID1);
int gridtype2 = gridInqType(gridID2);
gridsize2 = gridInqSize(gridID2);
int gridsize2 = gridInqSize(gridID2);
if ( gridtype1 != gridtype2 )
cdoAbort("Input streams have different grid types!");
if ( index == NULL ) cdoAbort("Internal problem, index not allocated!");
for ( i = 0; i < gridsize2; i++ ) index[i] = -1;
for ( int i = 0; i < gridsize2; i++ ) index[i] = -1;
if ( gridtype1 == GRID_LONLAT || gridtype1 == GRID_GAUSSIAN )
{
if ( gridIsRotated(gridID1) )
cdoAbort("Rotated grids unsupported!");
nlon1 = gridInqXsize(gridID1);
nlat1 = gridInqYsize(gridID1);
int nlon1 = gridInqXsize(gridID1);
int nlat1 = gridInqYsize(gridID1);
nlon2 = gridInqXsize(gridID2);
nlat2 = gridInqYsize(gridID2);
int nlon2 = gridInqXsize(gridID2);
int nlat2 = gridInqYsize(gridID2);
if ( ! (gridInqXvals(gridID1, NULL) && gridInqYvals(gridID1, NULL)) )
cdoAbort("Grid 1 has no values!");
......@@ -69,13 +62,13 @@ void gen_index(int gridID1, int gridID2, int *index)
if ( ! (gridInqXvals(gridID2, NULL) && gridInqYvals(gridID2, NULL)) )
cdoAbort("Grid 2 has no values!");
xvals1 = (double*) Malloc(nlon1*sizeof(double));
yvals1 = (double*) Malloc(nlat1*sizeof(double));
xvals2 = (double*) Malloc(nlon2*sizeof(double));
yvals2 = (double*) Malloc(nlat2*sizeof(double));
double *xvals1 = (double*) Malloc(nlon1*sizeof(double));
double *yvals1 = (double*) Malloc(nlat1*sizeof(double));
double *xvals2 = (double*) Malloc(nlon2*sizeof(double));
double *yvals2 = (double*) Malloc(nlat2*sizeof(double));
xindex = (int*) Malloc(nlon2*sizeof(int));
yindex = (int*) Malloc(nlat2*sizeof(int));
int *xindex = (int*) Malloc(nlon2*sizeof(int));
int *yindex = (int*) Malloc(nlat2*sizeof(int));
gridInqXvals(gridID1, xvals1);
gridInqYvals(gridID1, yvals1);
......@@ -101,7 +94,7 @@ void gen_index(int gridID1, int gridID2, int *index)
grid_to_degree(units, nlat2, yvals2, "grid2 center lat");
}
for ( i2 = 0; i2 < nlat2; i2++ )
for ( int i2 = 0; i2 < nlat2; i2++ )
{
for ( i1 = 0; i1 < nlat1; i1++ )
if ( fabs(yvals2[i2]-yvals1[i1]) < 0.001 ) break;
......@@ -112,7 +105,7 @@ void gen_index(int gridID1, int gridID2, int *index)
yindex[i2] = i1;
}
for ( i2 = 0; i2 < nlon2; i2++ )
for ( int i2 = 0; i2 < nlon2; i2++ )
{
for ( i1 = 0; i1 < nlon1; i1++ )
if ( fabs(xvals2[i2]-xvals1[i1]) < 0.001 ) break;
......@@ -143,9 +136,9 @@ void gen_index(int gridID1, int gridID2, int *index)
for ( i2 = 0; i2 < nlat2; i2++ )
printf("y %d %d\n", i2, yindex[i2]);
*/
k = 0;
for ( j = 0; j < nlat2; j++ )
for ( i = 0; i < nlon2; i++ )
int k = 0;
for ( int j = 0; j < nlat2; j++ )
for ( int i = 0; i < nlon2; i++ )
{
if ( xindex[i] == -1 || yindex[j] == -1 )
index[k++] = -1;
......@@ -168,13 +161,7 @@ void gen_index(int gridID1, int gridID2, int *index)
void *Enlargegrid(void *argument)
{
int varID;
int nrecs = 0;
int recID, levelID;
int nmiss1, nmiss2;
int index;
int i;
double missval1;
cdoInitialize(argument);
......@@ -191,7 +178,7 @@ void *Enlargegrid(void *argument)
int taxisID2 = taxisDuplicate(taxisID1);
int ndiffgrids = 0;
for ( index = 1; index < vlistNgrids(vlistID1); index++ )
for ( int index = 1; index < vlistNgrids(vlistID1); index++ )
if ( vlistGrid(vlistID1, 0) != vlistGrid(vlistID1, index) )
ndiffgrids++;
......@@ -211,7 +198,7 @@ void *Enlargegrid(void *argument)
int vlistID2 = vlistDuplicate(vlistID1);
int ngrids = vlistNgrids(vlistID1);
for ( index = 0; index < ngrids; index++ )
for ( int index = 0; index < ngrids; index++ )
{
vlistChangeGridIndex(vlistID2, index, gridID2);
}
......@@ -228,20 +215,21 @@ void *Enlargegrid(void *argument)
streamDefTimestep(streamID2, tsID);
for ( recID = 0; recID < nrecs; recID++ )
for ( int recID = 0; recID < nrecs; recID++ )
{
int varID, levelID, nmiss1;
streamInqRecord(streamID1, &varID, &levelID);
streamReadRecord(streamID1, array1, &nmiss1);
missval1 = vlistInqVarMissval(vlistID1, varID);
double missval1 = vlistInqVarMissval(vlistID1, varID);
for ( i = 0; i < gridsize2; i++ ) array2[i] = missval1;
for ( i = 0; i < gridsize1; i++ )
for ( int i = 0; i < gridsize2; i++ ) array2[i] = missval1;
for ( int i = 0; i < gridsize1; i++ )
if ( gindex[i] >= 0 )
array2[gindex[i]] = array1[i];
nmiss2 = 0;
for ( i = 0; i < gridsize2; i++ )
int nmiss2 = 0;
for ( int i = 0; i < gridsize2; i++ )
if ( DBL_IS_EQUAL(array2[i], missval1) ) nmiss2++;
streamDefRecord(streamID2, varID, levelID);
......
......@@ -40,14 +40,8 @@
void *Ensstat(void *argument)
{
int i;
int varID = 0, recID;
int gridID;
int nrecs, nrecs0;
int levelID = 0;
int streamID = 0;
int nrecs0;
int nmiss;
double missval;
typedef struct
{
int streamID;
......@@ -103,7 +97,7 @@ void *Ensstat(void *argument)
ens_file_t *ef = (ens_file_t *) Malloc(nfiles*sizeof(ens_file_t));
field_t *field = (field_t *) Malloc(ompNumThreads*sizeof(field_t));
for ( i = 0; i < ompNumThreads; i++ )
for ( int i = 0; i < ompNumThreads; i++ )
{
field_init(&field[i]);
field[i].size = nfiles;
......@@ -140,12 +134,12 @@ void *Ensstat(void *argument)
if ( count_data )
{
count2 = (double *) Malloc(gridsize*sizeof(double));
for ( varID = 0; varID < nvars; ++varID )
for ( int varID = 0; varID < nvars; ++varID )
{
char name[CDI_MAX_NAME];
vlistInqVarName(vlistID2, varID, name);
strcat(name, "_count");
gridID = vlistInqVarGrid(vlistID2, varID);
int gridID = vlistInqVarGrid(vlistID2, varID);
int zaxisID = vlistInqVarZaxis(vlistID2, varID);
int tsteptype = vlistInqVarTsteptype(vlistID2, varID);
int cvarID = vlistDefVar(vlistID2, gridID, zaxisID, tsteptype);
......@@ -165,8 +159,8 @@ void *Ensstat(void *argument)
nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
for ( int fileID = 1; fileID < nfiles; fileID++ )
{
streamID = ef[fileID].streamID;
nrecs = streamInqTimestep(streamID, tsID);
int streamID = ef[fileID].streamID;
int nrecs = streamInqTimestep(streamID, tsID);
if ( nrecs != nrecs0 )
{
if ( nrecs == 0 )
......@@ -183,30 +177,30 @@ void *Ensstat(void *argument)
streamDefTimestep(streamID2, tsID);
}
for ( recID = 0; recID < nrecs0; recID++ )
for ( int recID = 0; recID < nrecs0; recID++ )
{
int varID = 0, levelID;
#if defined(_OPENMP)
#pragma omp parallel for default(none) shared(ef, nfiles) \
private(streamID, nmiss) \
lastprivate(varID, levelID)
#pragma omp parallel for default(none) shared(ef, nfiles) lastprivate(varID, levelID)
#endif
for ( int fileID = 0; fileID < nfiles; fileID++ )
{
streamID = ef[fileID].streamID;
int nmiss;
int streamID = ef[fileID].streamID;
streamInqRecord(streamID, &varID, &levelID);
streamReadRecord(streamID, ef[fileID].array, &nmiss);
ef[fileID].missval = vlistInqVarMissval(ef[fileID].vlistID, varID);
}
gridID = vlistInqVarGrid(vlistID1, varID);
int gridID = vlistInqVarGrid(vlistID1, varID);
gridsize = gridInqSize(gridID);
missval = vlistInqVarMissval(vlistID1, varID);
double missval = vlistInqVarMissval(vlistID1, varID);
nmiss = 0;
#if defined(_OPENMP)
#pragma omp parallel for default(shared)
#endif
for ( i = 0; i < gridsize; ++i )
for ( int i = 0; i < gridsize; ++i )
{
int ompthID = cdo_omp_get_thread_num();
......@@ -264,7 +258,7 @@ void *Ensstat(void *argument)
if ( array2 ) Free(array2);
if ( count2 ) Free(count2);
for ( i = 0; i < ompNumThreads; i++ )
for ( int i = 0; i < ompNumThreads; i++ )
{
if ( field[i].ptr ) Free(field[i].ptr);
if ( field[i].weight ) Free(field[i].weight);
......
......@@ -51,33 +51,23 @@ double roc_curve_integrate(const double **roc, const int n);
void *Ensstat3(void *argument)
{
int operatorID;
int operfunc, datafunc;
int i,j;
int nvars,nbins, nrecs = 0, nrecs0, nmiss, nens, nfiles;
int nrecs = 0, nrecs0, nmiss;
int cum;
int chksum; // for check of histogram population
int levelID, varID, recID, tsID, binID = 0;
int gridsize = 0;
int levelID, varID, binID = 0;
int vlistID;
int gridID, gridID2;
int have_miss = 0;
int streamID = 0, streamID2 = 0;
int vlistID, vlistID1, vlistID2;
int taxisID1, taxisID2;
int zaxisID2;
int *varID2;
int time_mode;
int **array2 = NULL;
int **ctg_tab = NULL, *hist = NULL; // contingency table and histogram
double missval;
double *levs;
double *dat; // pointer to ensemble data for ROC
double *uThresh = NULL, *lThresh = NULL; // thresholds for histograms
double **roc = NULL; // receiver operating characteristics table
double val;
int ival;
field_t *field;
const char *ofilename;
typedef struct
{
......@@ -85,7 +75,6 @@ void *Ensstat3(void *argument)
int vlistID;
double *array;
} ens_file_t;
ens_file_t *ef = NULL;
cdoInitialize(argument);
......@@ -93,35 +82,35 @@ void *Ensstat3(void *argument)
cdoOperatorAdd("ensrkhist_space", func_rank, space_data, NULL);
cdoOperatorAdd("ensrkhist_time", func_rank, time_data, NULL);
operatorID = cdoOperatorID();
operfunc = cdoOperatorF1(operatorID);
datafunc = cdoOperatorF2(operatorID);
int operatorID = cdoOperatorID();
int operfunc = cdoOperatorF1(operatorID);
int datafunc = cdoOperatorF2(operatorID);
int nbins = 0;
if ( operfunc == func_roc ) {
operatorInputArg("Number of eigen functions to write out");
nbins = parameter2int(operatorArgv()[0]);
nbins = parameter2int(operatorArgv()[0]);
}
nfiles = cdoStreamCnt() - 1;
nens = nfiles-1;
int nfiles = cdoStreamCnt() - 1;
int nens = nfiles-1;
if ( cdoVerbose )
cdoPrint("Ensemble over %d files.", nfiles);
ofilename = cdoStreamName(nfiles)->args;
const char *ofilename = cdoStreamName(nfiles)->args;
if ( !cdoOverwriteMode && fileExists(ofilename) && !userFileOverwrite(ofilename) )
cdoAbort("Outputfile %s already exists!", ofilename);
ef = (ens_file_t*) Malloc(nfiles*sizeof(ens_file_t));
ens_file_t *ef = (ens_file_t*) Malloc(nfiles*sizeof(ens_file_t));
/* *************************************************** */
/* should each thread be allocating memory locally???? */
/* ("first touch strategy") */
/* --> #pragma omp parallel for ... */
/* *************************************************** */
field = (field_t*) Malloc(ompNumThreads*sizeof(field_t));
field_t *field = (field_t*) Malloc(ompNumThreads*sizeof(field_t));
for ( i = 0; i < ompNumThreads; i++ )
{
field_init(&field[i]);
......@@ -146,19 +135,19 @@ void *Ensstat3(void *argument)
for ( int fileID = 1; fileID < nfiles; fileID++ )
vlistCompare(ef[0].vlistID, ef[fileID].vlistID, CMP_ALL);
vlistID1 = ef[0].vlistID;
vlistID2 = vlistCreate();
nvars = vlistNvars(vlistID1);
varID2 = (int*) Malloc(nvars*sizeof(int));
int vlistID1 = ef[0].vlistID;
int vlistID2 = vlistCreate();
int nvars = vlistNvars(vlistID1);
int *varID2 = (int*) Malloc(nvars*sizeof(int));
levs = (double*) Calloc(nfiles, sizeof(double));
zaxisID2 = zaxisCreate(ZAXIS_GENERIC, nfiles);
double *levs = (double*) Calloc(nfiles, sizeof(double));
int zaxisID2 = zaxisCreate(ZAXIS_GENERIC, nfiles);
for ( i=0; i<nfiles; i++ )
levs[i] = i;
zaxisDefLevels(zaxisID2,levs);
zaxisDefName(zaxisID2, "histogram_binID");
time_mode = datafunc == TIME? TSTEP_INSTANT : TSTEP_CONSTANT;
int time_mode = datafunc == TIME? TSTEP_INSTANT : TSTEP_CONSTANT;
for ( varID=0; varID<nvars; varID++) {
......@@ -182,8 +171,8 @@ void *Ensstat3(void *argument)
varID2[varID] = vlistDefVar(vlistID2, gridID2, zaxisID2, time_mode);
}
taxisID1 = vlistInqTaxis(vlistID1);
taxisID2 = taxisDuplicate(taxisID1);
int taxisID1 = vlistInqTaxis(vlistID1);
int taxisID2 = taxisDuplicate(taxisID1);
vlistDefTaxis(vlistID2, taxisID2);
for ( varID=0; varID< nvars; varID++ ){
......@@ -202,7 +191,7 @@ void *Ensstat3(void *argument)
streamDefVlist(streamID2, vlistID2);
}
gridsize = vlistGridsizeMax(vlistID1);
int gridsize = vlistGridsizeMax(vlistID1);
for ( int fileID = 0; fileID < nfiles; fileID++ )
ef[fileID].array = (double*) Malloc(gridsize*sizeof(double));
......@@ -239,7 +228,7 @@ void *Ensstat3(void *argument)
}
tsID = 0;
int tsID = 0;
do
{
nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
......@@ -265,7 +254,7 @@ void *Ensstat3(void *argument)
// fprintf(stderr,"TIMESTEP %i varID %i rec %i\n",tsID,varID,recID);
for ( recID = 0; recID < nrecs0; recID++ )
for ( int recID = 0; recID < nrecs0; recID++ )
{
#if defined(_OPENMP)
#pragma omp parallel for default(none) shared(ef, nfiles) \
......@@ -454,7 +443,6 @@ void *Ensstat3(void *argument)
fprintf(stdout, "# : TP FP FN TN TPR FPR\n");
for ( i=0; i<= nbins; i++ ) {
int sum;
int p = ctg_tab[i][TP] + ctg_tab[i][FN];
int n = ctg_tab[i][FP] + ctg_tab[i][TN];
double tpr = ctg_tab[i][TP]/(double) p;
......@@ -464,7 +452,7 @@ void *Ensstat3(void *argument)
roc[i][TPR] = tpr;
roc[i][FPR] = fpr;
sum = ctg_tab[i][TP] + ctg_tab[i][TN] + ctg_tab[i][FP] + ctg_tab[i][FN];
int sum = ctg_tab[i][TP] + ctg_tab[i][TN] + ctg_tab[i][FP] + ctg_tab[i][FN];
fprintf(stdout, "%3i %10.4g: %6i %6i %6i %6i (%6i): %10.4g %10.4g\n",
i,i<nbins?lThresh[i]:1,
......@@ -510,12 +498,11 @@ void *Ensstat3(void *argument)
double roc_curve_integrate(const double **roc, const int n) {
double y1, y0, x1,x0, dx, dy, area;
double y1, y0, x1,x0, dx, dy;
double step_area;
int i=0;
area = 0;
double area = 0;
for ( i=1; i<=n; i++ ) {
for ( int i = 1; i <= n; ++i ) {
x1 = roc[i][FPR]; x0 = roc[i-1][FPR];
y1 = roc[i][TPR]; y0 = roc[i-1][TPR];
dx = x1-x0;
......
......@@ -42,26 +42,20 @@ enum RESTYPE_CRPS { CRPS_RES,CRPS_RELI,CRPS_POT };
void *Ensval(void *argument)
{
int operatorID;
int operfunc;
int i,k;
int nvars,nrecs = 0, nrecs0, nmiss, nens, nfiles, nostreams = 0, ngrids;
int levelID, varID, recID, tsID;
int nrecs = 0, nrecs0, nmiss, nostreams = 0, ngrids;
int levelID, varID;
int gridsize = 0;
int gridID = -1, gridID2;
int streamID1, vlistID;
int gridID = -1;
int have_miss = 0;
int stream, streamID1 = -1, streamID = 0, *streamID2;
int vlistID, vlistID1, *vlistID2;
int taxisID1, *taxisID2;
int zaxisID1, *zaxisID2;
int stream, streamID = 0;
//int xsize,ysize;
double missval = 0;
double *alpha, *beta, *alpha_weights, *beta_weights;
double *brs_g, *brs_o, *brs_g_weights, *brs_o_weights;
double *r; // Pointer to hold results for single time step
double xval=0; double yval=0;
double xa, *x;
double *val;
double *weights, sum_weights = 0;
double crps_reli, crps_pot, crps;
double heavyside0, heavysideN;
......@@ -69,11 +63,8 @@ void *Ensval(void *argument)
double g,o,p;
int fileID;
const char *ofilebase;
char *ofilename;
char file_suffix[32];
char type_suffix[10];
const char *refname;