Commit 9c0b5a46 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

New operator: inttime2

parent bc0f0864
......@@ -172,6 +172,7 @@ src/Input.c -text
src/Intgrid.c -text
src/Intgridtraj.c -text
src/Inttime.c -text
src/Inttime2.c -text
src/Intyear.c -text
src/Invert.c -text
src/Makefile.am -text
......
2006-11-?? Uwe Schulzweida <Uwe.Schulzweida@zmaw.de>
* using CDI library version 1.0.3
* New operator: inttime2 [request: Michael Boettinger]
* inttime: extention for months and years [request: Holger Goettel]
* remaplib.sort_add: don't sort if num_links <= 1
* remaplib.remap_bi?: check that src_add is valid
......
/*
This file is part of CDO. CDO is a collection of Operators to
manipulate and analyse Climate model Data.
Copyright (C) 2003-2006 Uwe Schulzweida, schulzweida@dkrz.de
See COPYING file for copying and redistribution conditions.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
/*
This module contains the following operators:
Inttime2 inttime2 Time interpolation
*/
#include <string.h>
#include <ctype.h> /* isdigit */
#include "cdi.h"
#include "cdo.h"
#include "cdo_int.h"
#include "pstream.h"
#include "interpol.h"
void *Inttime2(void *argument)
{
static char func[] = "Inttime2";
int streamID1, streamID2;
int nrecs, nvars, nlevel;
int i, nrecords;
int tsID, tsIDo, recID, varID, levelID;
int gridsize;
int vlistID1, vlistID2;
int taxisID1, taxisID2;
int vdate, vtime;
int vdate1, vtime1;
int vdate2, vtime2;
int offset;
int dpy, calendar;
int numts, it;
int year, month, day, hour, minute;
int *recVarID, *recLevelID;
int **nmiss1, **nmiss2, nmiss3;
double missval1, missval2;
double julval1, julval2, julval;
double fac1, fac2;
double *array, *single1, *single2;
double **vardata1, **vardata2, *vardatap;
cdoInitialize(argument);
operatorInputArg("number of timesteps between 2 timesteps");
if ( operatorArgc() < 1 ) cdoAbort("Not enough arguments!");
numts = atoi(operatorArgv()[0]);
if ( numts < 2 ) cdoAbort("parameter must be greater than 1!");
streamID1 = streamOpenRead(cdoStreamName(0));
if ( streamID1 < 0 ) cdiError(streamID1, "Open failed on %s", cdoStreamName(0));
vlistID1 = streamInqVlist(streamID1);
vlistID2 = vlistDuplicate(vlistID1);
nvars = vlistNvars(vlistID1);
nrecords = vlistNrecs(vlistID1);
recVarID = (int *) malloc(nrecords*sizeof(int));
recLevelID = (int *) malloc(nrecords*sizeof(int));
gridsize = vlistGridsizeMax(vlistID1);
array = (double *) malloc(gridsize*sizeof(double));
nmiss1 = (int **) malloc(nvars*sizeof(int *));
nmiss2 = (int **) malloc(nvars*sizeof(int *));
vardata1 = (double **) malloc(nvars*sizeof(double *));
vardata2 = (double **) malloc(nvars*sizeof(double *));
for ( varID = 0; varID < nvars; varID++ )
{
gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
nmiss1[varID] = (int *) malloc(nlevel*sizeof(int));
nmiss2[varID] = (int *) malloc(nlevel*sizeof(int));
vardata1[varID] = (double *) malloc(gridsize*nlevel*sizeof(double));
vardata2[varID] = (double *) malloc(gridsize*nlevel*sizeof(double));
}
taxisID1 = vlistInqTaxis(vlistID1);
taxisID2 = taxisDuplicate(taxisID1);
vlistDefTaxis(vlistID2, taxisID2);
streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
if ( streamID2 < 0 ) cdiError(streamID2, "Open failed on %s", cdoStreamName(1));
streamDefVlist(streamID2, vlistID2);
calendar = taxisInqCalendar(taxisID1);
dpy = calendar_dpy(calendar);
tsID = 0;
tsIDo = 0;
nrecs = streamInqTimestep(streamID1, tsID++);
vdate1 = taxisInqVdate(taxisID1);
vtime1 = taxisInqVtime(taxisID1);
julval1 = encode_julval(dpy, vdate1, vtime1);
taxisCopyTimestep(taxisID2, taxisID1);
streamDefTimestep(streamID2, tsIDo++);
for ( recID = 0; recID < nrecs; recID++ )
{
streamInqRecord(streamID1, &varID, &levelID);
gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
offset = gridsize*levelID;
single1 = vardata1[varID] + offset;
streamReadRecord(streamID1, single1, &nmiss1[varID][levelID]);
streamDefRecord(streamID2, varID, levelID);
streamWriteRecord(streamID2, single1, nmiss1[varID][levelID]);
}
while ( (nrecs = streamInqTimestep(streamID1, tsID++)) )
{
vdate2 = taxisInqVdate(taxisID1);
vtime2 = taxisInqVtime(taxisID1);
julval2 = encode_julval(dpy, vdate2, vtime2);
for ( recID = 0; recID < nrecs; recID++ )
{
streamInqRecord(streamID1, &varID, &levelID);
recVarID[recID] = varID;
recLevelID[recID] = levelID;
gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
offset = gridsize*levelID;
single2 = vardata2[varID] + offset;
streamReadRecord(streamID1, single2, &nmiss2[varID][levelID]);
}
for ( it = 1; it < numts; it++ )
{
julval = julval1 + it*(julval2 - julval1)/numts;
decode_julval(dpy, julval, &vdate, &vtime);
if ( cdoVerbose )
{
/*
cdoPrint("julval1 %f", julval1);
cdoPrint("julval %f", julval);
cdoPrint("julval2 %f", julval2);
*/
decode_date(vdate, &year, &month, &day);
decode_time(vtime, &hour, &minute);
cdoPrint("%4.4d-%2.2d-%2.2d %2.2d:%2.2d",
year, month, day, hour, minute);
}
taxisDefVdate(taxisID2, vdate);
taxisDefVtime(taxisID2, vtime);
streamDefTimestep(streamID2, tsIDo++);
fac1 = (julval2-julval) / (julval2-julval1);
fac2 = (julval-julval1) / (julval2-julval1);
for ( recID = 0; recID < nrecs; recID++ )
{
varID = recVarID[recID];
levelID = recLevelID[recID];
gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
offset = gridsize*levelID;
single1 = vardata1[varID] + offset;
single2 = vardata2[varID] + offset;
nmiss3 = 0;
if ( nmiss1[varID][levelID] > 0 || nmiss2[varID][levelID] > 0 )
{
missval1 = vlistInqVarMissval(vlistID1, varID);
missval2 = vlistInqVarMissval(vlistID2, varID);
for ( i = 0; i < gridsize; i++ )
{
if ( !DBL_IS_EQUAL(single1[i], missval1) &&
!DBL_IS_EQUAL(single2[i], missval2) )
array[i] = single1[i]*fac1 + single2[i]*fac2;
else if ( DBL_IS_EQUAL(single1[i], missval1) &&
!DBL_IS_EQUAL(single2[i], missval2) && fac2 >= 0.5 )
array[i] = single2[i];
else if ( DBL_IS_EQUAL(single2[i], missval2) &&
!DBL_IS_EQUAL(single1[i], missval1) && fac1 >= 0.5 )
array[i] = single1[i];
else
{
array[i] = missval1;
nmiss3++;
}
}
}
else
{
for ( i = 0; i < gridsize; i++ )
array[i] = single1[i]*fac1 + single2[i]*fac2;
}
streamDefRecord(streamID2, varID, levelID);
streamWriteRecord(streamID2, array, nmiss3);
}
}
taxisDefVdate(taxisID2, vdate2);
taxisDefVtime(taxisID2, vtime2);
streamDefTimestep(streamID2, tsIDo++);
for ( recID = 0; recID < nrecs; recID++ )
{
varID = recVarID[recID];
levelID = recLevelID[recID];
gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
offset = gridsize*levelID;
single2 = vardata2[varID] + offset;
streamDefRecord(streamID2, varID, levelID);
streamWriteRecord(streamID2, single2, nmiss2[varID][levelID]);
}
for ( varID = 0; varID < nvars; varID++ )
{
vardatap = vardata1[varID];
vardata1[varID] = vardata2[varID];
vardata2[varID] = vardatap;
}
vdate1 = vdate2;
vtime1 = vtime2;
julval1 = julval2;
}
for ( varID = 0; varID < nvars; varID++ )
{
free(nmiss1[varID]);
free(nmiss2[varID]);
free(vardata1[varID]);
free(vardata2[varID]);
}
free(nmiss1);
free(nmiss2);
free(vardata1);
free(vardata2);
if ( array ) free(array);
streamClose(streamID2);
streamClose(streamID1);
cdoFinish();
return (0);
}
......@@ -31,6 +31,7 @@ cdo_SOURCES = Arith.c \
Intgrid.c \
Intgridtraj.c \
Inttime.c \
Inttime2.c \
Intyear.c \
Invert.c \
Maskbox.c \
......
......@@ -111,6 +111,7 @@ cdo_SOURCES = Arith.c \
Intgrid.c \
Intgridtraj.c \
Inttime.c \
Inttime2.c \
Intyear.c \
Invert.c \
Maskbox.c \
......@@ -239,6 +240,7 @@ cdo_SOURCES = Arith.c \
vinterp.h \
namelist.h \
util.h \
etopo.h \
cdi.h
#
......@@ -261,41 +263,41 @@ am_cdo_OBJECTS = Arith.$(OBJEXT) Arithc.$(OBJEXT) Arithdays.$(OBJEXT) \
Fldrms.$(OBJEXT) Fldstat.$(OBJEXT) Gradsdes.$(OBJEXT) \
Histogram.$(OBJEXT) Info.$(OBJEXT) Input.$(OBJEXT) \
Intgrid.$(OBJEXT) Intgridtraj.$(OBJEXT) Inttime.$(OBJEXT) \
Intyear.$(OBJEXT) Invert.$(OBJEXT) Maskbox.$(OBJEXT) \
Mastrfu.$(OBJEXT) Math.$(OBJEXT) Merge.$(OBJEXT) \
Mergegrid.$(OBJEXT) Mergetime.$(OBJEXT) Merstat.$(OBJEXT) \
Ninfo.$(OBJEXT) Nmltest.$(OBJEXT) Output.$(OBJEXT) \
Outputgmt.$(OBJEXT) Pinfo.$(OBJEXT) Remap.$(OBJEXT) \
Replace.$(OBJEXT) Rotuv.$(OBJEXT) Runstat.$(OBJEXT) \
Seasstat.$(OBJEXT) Selbox.$(OBJEXT) Select.$(OBJEXT) \
Seloperator.$(OBJEXT) Selrec.$(OBJEXT) Selstat.$(OBJEXT) \
Seltime.$(OBJEXT) Set.$(OBJEXT) Setbox.$(OBJEXT) \
Setgatt.$(OBJEXT) Setgrid.$(OBJEXT) Sethalo.$(OBJEXT) \
Setmiss.$(OBJEXT) Setrcaname.$(OBJEXT) Settime.$(OBJEXT) \
Setzaxis.$(OBJEXT) Showinfo.$(OBJEXT) Sinfo.$(OBJEXT) \
Sort.$(OBJEXT) Specinfo.$(OBJEXT) Spectral.$(OBJEXT) \
Split.$(OBJEXT) Splitrec.$(OBJEXT) Splittime.$(OBJEXT) \
Splityear.$(OBJEXT) Subtrend.$(OBJEXT) Templates.$(OBJEXT) \
Test.$(OBJEXT) Timsort.$(OBJEXT) Timstat.$(OBJEXT) \
Trend.$(OBJEXT) Trms.$(OBJEXT) Vardup.$(OBJEXT) \
Vargen.$(OBJEXT) Varrms.$(OBJEXT) Vertint.$(OBJEXT) \
Vertstat.$(OBJEXT) Wind.$(OBJEXT) Writegrid.$(OBJEXT) \
Writerandom.$(OBJEXT) Ydaystat.$(OBJEXT) Ymonarith.$(OBJEXT) \
Ymonstat.$(OBJEXT) Yseasstat.$(OBJEXT) Zonstat.$(OBJEXT) \
cdilib.$(OBJEXT) commandline.$(OBJEXT) exception.$(OBJEXT) \
expr_yacc.$(OBJEXT) expr_lex.$(OBJEXT) expr.$(OBJEXT) \
cdo.$(OBJEXT) cdo_pthread.$(OBJEXT) cdo_vlist.$(OBJEXT) \
field.$(OBJEXT) fieldc.$(OBJEXT) field2.$(OBJEXT) \
fieldmer.$(OBJEXT) fieldzon.$(OBJEXT) grid.$(OBJEXT) \
history.$(OBJEXT) institution.$(OBJEXT) interpol.$(OBJEXT) \
job.$(OBJEXT) modules.$(OBJEXT) namelist.$(OBJEXT) \
normal.$(OBJEXT) pipe.$(OBJEXT) process.$(OBJEXT) \
remaplib.$(OBJEXT) timer.$(OBJEXT) realtime.$(OBJEXT) \
pstream.$(OBJEXT) table.$(OBJEXT) userlog.$(OBJEXT) \
util.$(OBJEXT) legendre.$(OBJEXT) fourier.$(OBJEXT) \
specspace.$(OBJEXT) readline.$(OBJEXT) julian.$(OBJEXT) \
vinterp.$(OBJEXT) zaxis.$(OBJEXT) pthread_debug.$(OBJEXT) \
color.$(OBJEXT) list.$(OBJEXT)
Inttime2.$(OBJEXT) Intyear.$(OBJEXT) Invert.$(OBJEXT) \
Maskbox.$(OBJEXT) Mastrfu.$(OBJEXT) Math.$(OBJEXT) \
Merge.$(OBJEXT) Mergegrid.$(OBJEXT) Mergetime.$(OBJEXT) \
Merstat.$(OBJEXT) Ninfo.$(OBJEXT) Nmltest.$(OBJEXT) \
Output.$(OBJEXT) Outputgmt.$(OBJEXT) Pinfo.$(OBJEXT) \
Remap.$(OBJEXT) Replace.$(OBJEXT) Rotuv.$(OBJEXT) \
Runstat.$(OBJEXT) Seasstat.$(OBJEXT) Selbox.$(OBJEXT) \
Select.$(OBJEXT) Seloperator.$(OBJEXT) Selrec.$(OBJEXT) \
Selstat.$(OBJEXT) Seltime.$(OBJEXT) Set.$(OBJEXT) \
Setbox.$(OBJEXT) Setgatt.$(OBJEXT) Setgrid.$(OBJEXT) \
Sethalo.$(OBJEXT) Setmiss.$(OBJEXT) Setrcaname.$(OBJEXT) \
Settime.$(OBJEXT) Setzaxis.$(OBJEXT) Showinfo.$(OBJEXT) \
Sinfo.$(OBJEXT) Sort.$(OBJEXT) Specinfo.$(OBJEXT) \
Spectral.$(OBJEXT) Split.$(OBJEXT) Splitrec.$(OBJEXT) \
Splittime.$(OBJEXT) Splityear.$(OBJEXT) Subtrend.$(OBJEXT) \
Templates.$(OBJEXT) Test.$(OBJEXT) Timsort.$(OBJEXT) \
Timstat.$(OBJEXT) Trend.$(OBJEXT) Trms.$(OBJEXT) \
Vardup.$(OBJEXT) Vargen.$(OBJEXT) Varrms.$(OBJEXT) \
Vertint.$(OBJEXT) Vertstat.$(OBJEXT) Wind.$(OBJEXT) \
Writegrid.$(OBJEXT) Writerandom.$(OBJEXT) Ydaystat.$(OBJEXT) \
Ymonarith.$(OBJEXT) Ymonstat.$(OBJEXT) Yseasstat.$(OBJEXT) \
Zonstat.$(OBJEXT) cdilib.$(OBJEXT) commandline.$(OBJEXT) \
exception.$(OBJEXT) expr_yacc.$(OBJEXT) expr_lex.$(OBJEXT) \
expr.$(OBJEXT) cdo.$(OBJEXT) cdo_pthread.$(OBJEXT) \
cdo_vlist.$(OBJEXT) field.$(OBJEXT) fieldc.$(OBJEXT) \
field2.$(OBJEXT) fieldmer.$(OBJEXT) fieldzon.$(OBJEXT) \
grid.$(OBJEXT) history.$(OBJEXT) institution.$(OBJEXT) \
interpol.$(OBJEXT) job.$(OBJEXT) modules.$(OBJEXT) \
namelist.$(OBJEXT) normal.$(OBJEXT) pipe.$(OBJEXT) \
process.$(OBJEXT) remaplib.$(OBJEXT) timer.$(OBJEXT) \
realtime.$(OBJEXT) pstream.$(OBJEXT) table.$(OBJEXT) \
userlog.$(OBJEXT) util.$(OBJEXT) legendre.$(OBJEXT) \
fourier.$(OBJEXT) specspace.$(OBJEXT) readline.$(OBJEXT) \
julian.$(OBJEXT) vinterp.$(OBJEXT) zaxis.$(OBJEXT) \
pthread_debug.$(OBJEXT) color.$(OBJEXT) list.$(OBJEXT)
cdo_OBJECTS = $(am_cdo_OBJECTS)
cdo_DEPENDENCIES =
cdo_LDFLAGS =
......@@ -320,54 +322,54 @@ am__depfiles_maybe = depfiles
@AMDEP_TRUE@ ./$(DEPDIR)/Gradsdes.Po ./$(DEPDIR)/Histogram.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Info.Po ./$(DEPDIR)/Input.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Intgrid.Po ./$(DEPDIR)/Intgridtraj.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Inttime.Po ./$(DEPDIR)/Intyear.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Invert.Po ./$(DEPDIR)/Maskbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Mastrfu.Po ./$(DEPDIR)/Math.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Merge.Po ./$(DEPDIR)/Mergegrid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Mergetime.Po ./$(DEPDIR)/Merstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Ninfo.Po ./$(DEPDIR)/Nmltest.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Output.Po ./$(DEPDIR)/Outputgmt.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Pinfo.Po ./$(DEPDIR)/Remap.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Replace.Po ./$(DEPDIR)/Rotuv.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Runstat.Po ./$(DEPDIR)/Seasstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Selbox.Po ./$(DEPDIR)/Select.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Seloperator.Po ./$(DEPDIR)/Selrec.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Selstat.Po ./$(DEPDIR)/Seltime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Set.Po ./$(DEPDIR)/Setbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setgatt.Po ./$(DEPDIR)/Setgrid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Sethalo.Po ./$(DEPDIR)/Setmiss.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setrcaname.Po ./$(DEPDIR)/Settime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setzaxis.Po ./$(DEPDIR)/Showinfo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Sinfo.Po ./$(DEPDIR)/Sort.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Specinfo.Po ./$(DEPDIR)/Spectral.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Split.Po ./$(DEPDIR)/Splitrec.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Splittime.Po ./$(DEPDIR)/Splityear.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Subtrend.Po ./$(DEPDIR)/Templates.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Test.Po ./$(DEPDIR)/Timsort.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Timstat.Po ./$(DEPDIR)/Trend.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Trms.Po ./$(DEPDIR)/Vardup.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Vargen.Po ./$(DEPDIR)/Varrms.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Vertint.Po ./$(DEPDIR)/Vertstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Wind.Po ./$(DEPDIR)/Writegrid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Writerandom.Po ./$(DEPDIR)/Ydaystat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Ymonarith.Po ./$(DEPDIR)/Ymonstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Yseasstat.Po ./$(DEPDIR)/Zonstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/cdilib.Po ./$(DEPDIR)/cdo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/cdo_pthread.Po ./$(DEPDIR)/cdo_vlist.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/color.Po ./$(DEPDIR)/commandline.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/exception.Po ./$(DEPDIR)/expr.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/expr_lex.Po ./$(DEPDIR)/expr_yacc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/field.Po ./$(DEPDIR)/field2.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/fieldc.Po ./$(DEPDIR)/fieldmer.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/fieldzon.Po ./$(DEPDIR)/fourier.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/grid.Po ./$(DEPDIR)/history.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/institution.Po ./$(DEPDIR)/interpol.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/job.Po ./$(DEPDIR)/julian.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/legendre.Po ./$(DEPDIR)/list.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/modules.Po ./$(DEPDIR)/namelist.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/normal.Po ./$(DEPDIR)/pipe.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/process.Po ./$(DEPDIR)/pstream.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/pthread_debug.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Inttime.Po ./$(DEPDIR)/Inttime2.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Intyear.Po ./$(DEPDIR)/Invert.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Maskbox.Po ./$(DEPDIR)/Mastrfu.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Math.Po ./$(DEPDIR)/Merge.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Mergegrid.Po ./$(DEPDIR)/Mergetime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Merstat.Po ./$(DEPDIR)/Ninfo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Nmltest.Po ./$(DEPDIR)/Output.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Outputgmt.Po ./$(DEPDIR)/Pinfo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Remap.Po ./$(DEPDIR)/Replace.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Rotuv.Po ./$(DEPDIR)/Runstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Seasstat.Po ./$(DEPDIR)/Selbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Select.Po ./$(DEPDIR)/Seloperator.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Selrec.Po ./$(DEPDIR)/Selstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Seltime.Po ./$(DEPDIR)/Set.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setbox.Po ./$(DEPDIR)/Setgatt.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setgrid.Po ./$(DEPDIR)/Sethalo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setmiss.Po ./$(DEPDIR)/Setrcaname.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Settime.Po ./$(DEPDIR)/Setzaxis.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Showinfo.Po ./$(DEPDIR)/Sinfo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Sort.Po ./$(DEPDIR)/Specinfo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Spectral.Po ./$(DEPDIR)/Split.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Splitrec.Po ./$(DEPDIR)/Splittime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Splityear.Po ./$(DEPDIR)/Subtrend.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Templates.Po ./$(DEPDIR)/Test.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Timsort.Po ./$(DEPDIR)/Timstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Trend.Po ./$(DEPDIR)/Trms.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Vardup.Po ./$(DEPDIR)/Vargen.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Varrms.Po ./$(DEPDIR)/Vertint.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Vertstat.Po ./$(DEPDIR)/Wind.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Writegrid.Po ./$(DEPDIR)/Writerandom.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Ydaystat.Po ./$(DEPDIR)/Ymonarith.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Ymonstat.Po ./$(DEPDIR)/Yseasstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Zonstat.Po ./$(DEPDIR)/cdilib.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/cdo.Po ./$(DEPDIR)/cdo_pthread.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/cdo_vlist.Po ./$(DEPDIR)/color.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/commandline.Po ./$(DEPDIR)/exception.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/expr.Po ./$(DEPDIR)/expr_lex.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/expr_yacc.Po ./$(DEPDIR)/field.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/field2.Po ./$(DEPDIR)/fieldc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/fieldmer.Po ./$(DEPDIR)/fieldzon.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/fourier.Po ./$(DEPDIR)/grid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/history.Po ./$(DEPDIR)/institution.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/interpol.Po ./$(DEPDIR)/job.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/julian.Po ./$(DEPDIR)/legendre.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/list.Po ./$(DEPDIR)/modules.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/namelist.Po ./$(DEPDIR)/normal.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/pipe.Po ./$(DEPDIR)/process.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/pstream.Po ./$(DEPDIR)/pthread_debug.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/readline.Po ./$(DEPDIR)/realtime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/remaplib.Po ./$(DEPDIR)/specspace.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/table.Po ./$(DEPDIR)/timer.Po \
......@@ -472,6 +474,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intgrid.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intgridtraj.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Inttime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Inttime2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intyear.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Invert.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Maskbox.Po@am__quote@
......
......@@ -65,6 +65,7 @@ void *Input(void *argument);
void *Intgrid(void *argument);
void *Intgridtraj(void *argument);
void *Inttime(void *argument);
void *Inttime2(void *argument);
void *Intyear(void *argument);
void *Invert(void *argument);
void *Maskbox(void *argument);
......@@ -161,6 +162,7 @@ void *Zonstat(void *argument);
#define IntgridOperators {"intgridbil", "intpoint", "interpolate", "intarea"}
#define IntgridtrajOperators {"intgridtraj"}
#define InttimeOperators {"inttime"}
#define Inttime2Operators {"inttime2"}
#define IntyearOperators {"intyear"}
#define InvertOperators {"invertlat", "invertlon", "invertlatdes", "invertlondes", \
"invertlatdata", "invertlondata"}
......@@ -273,6 +275,7 @@ static MODULES Modules[] =
{ Intgrid, IntgridHelp, IntgridOperators, 1, 1 },
{ Intgridtraj, NULL, IntgridtrajOperators, 1, 1 },
{ Inttime, InttimeHelp, InttimeOperators, 1, 1 },
{ Inttime2, NULL, Inttime2Operators, 1, 1 },
{ Intyear, IntyearHelp, IntyearOperators, 2, 1 },
{ Invert, InvertHelp, InvertOperators, 1, 1 },
{ Maskbox, MaskboxHelp, MaskboxOperators, 1, 1 },
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment