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

New module: Arithlat (mulcoslat, divcoslat)

parent 18def92e
......@@ -146,6 +146,7 @@ doc/tex/usage.tex -text
src/Arith.c -text
src/Arithc.c -text
src/Arithdays.c -text
src/Arithlat.c -text
src/Cat.c -text
src/Change.c -text
src/Comp.c -text
......
......@@ -2,6 +2,7 @@
* using CDI library version 1.0.0
* New operator: dv2ps (Wind) [request: Luis Kornblueh]
* New module: Arithlat (mulcoslat, divcoslat) <- docu missing
* setreftime: use taxisDuplicate to copy bounds [report: Ivonne Anders]
* Seasstat: bug fix for datasets with only 1 season [report: Simon Blessing]
* Vertint: remove special treatment for geopoth
......
......@@ -33,7 +33,7 @@
void *Arithdays(void *argument)
{
static char func[] = "Arithdpm";
static char func[] = "Arithdays";
int operatorID;
int operfunc, operfunc2;
int streamID1, streamID2;
......@@ -102,7 +102,7 @@ void *Arithdays(void *argument)
rconst = days_per_year(calendar, year);
if ( cdoVerbose )
cdoPrint("calendar %d , year %d, month %d result %g",
cdoPrint("calendar %d year %d month %d result %g",
calendar, year, month, rconst);
for ( recID = 0; recID < nrecs; recID++ )
......
/*
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:
Arithlat mulcoslat Multiply with cos(lat)
Arithlat divcoslat Divide by cos(lat)
*/
#include "cdi.h"
#include "cdo.h"
#include "cdo_int.h"
#include "pstream.h"
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846 /* pi */
#endif
#ifndef DEG2RAD
#define DEG2RAD (M_PI/180.) /* conversion for deg to rad */
#endif
void *Arithlat(void *argument)
{
static char func[] = "Arithlat";
int operatorID;
int operfunc;
int streamID1, streamID2;
int gridsize, gridtype;
int gridID, gridID0 = -1;
int nlon = 0, nlat = 0, i, j;
int nrecs, recID;
int tsID;
int varID, levelID;
int vlistID1, vlistID2;
int taxisID1, taxisID2;
int nmiss;
double *scale = NULL;
double *array = NULL;
cdoInitialize(argument);
cdoOperatorAdd("mulcoslat", func_mul, 0, NULL);
cdoOperatorAdd("divcoslat", func_div, 0, NULL);
operatorID = cdoOperatorID();
operfunc = cdoOperatorFunc(operatorID);
streamID1 = streamOpenRead(cdoStreamName(0));
if ( streamID1 < 0 ) cdiError(streamID1, "Open failed on %s", cdoStreamName(0));
vlistID1 = streamInqVlist(streamID1);
vlistID2 = vlistDuplicate(vlistID1);
taxisID1 = vlistInqTaxis(vlistID1);
taxisID2 = taxisDuplicate(taxisID1);
vlistDefTaxis(vlistID2, taxisID2);
if ( operfunc == func_mul || operfunc == func_div )
nospec(vlistID1);
streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
if ( streamID2 < 0 ) cdiError(streamID2, "Open failed on %s", cdoStreamName(1));
streamDefVlist(streamID2, vlistID2);
gridsize = vlistGridsizeMax(vlistID1);
array = (double *) malloc(gridsize*sizeof(double));
tsID = 0;
while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
{
taxisCopyTimestep(taxisID2, taxisID1);
streamDefTimestep(streamID2, tsID);
for ( recID = 0; recID < nrecs; recID++ )
{
streamInqRecord(streamID1, &varID, &levelID);
streamReadRecord(streamID1, array, &nmiss);
gridID = vlistInqVarGrid(vlistID1, varID);
if ( gridID != gridID0 )
{
gridtype = gridInqType(gridID);
if ( gridtype != GRID_LONLAT && gridtype != GRID_GAUSSIAN )
{
if ( gridInqType(gridID) == GRID_GAUSSIAN_REDUCED )
cdoAbort("Gaussian reduced grid found. Use option -R to convert it to a regular grid!");
else
cdoAbort("LONLAT or GAUSSIAN grid not found!");
}
gridsize = gridInqSize(gridID);
nlon = gridInqXsize(gridID);
nlat = gridInqYsize(gridID);
scale = (double *) realloc(scale, nlat*sizeof(double));
gridInqYvals(gridID, scale);
if ( operfunc == func_mul )
for ( j = 0; j < nlat; j++ ) scale[j] = cos(scale[j]*DEG2RAD);
else
for ( j = 0; j < nlat; j++ ) scale[j] = 1./cos(scale[j]*DEG2RAD);
if ( cdoVerbose ) for ( j = 0; j < nlat; j++ ) cdoPrint("coslat %3d %g", j+1, scale[j]);
gridID0 = gridID;
}
for ( j = 0; j < nlat; j++ )
for ( i = 0; i < nlon; i++ )
array[i+j*nlon] *= scale[j];
streamDefRecord(streamID2, varID, levelID);
streamWriteRecord(streamID2, array, nmiss);
}
tsID++;
}
streamClose(streamID2);
streamClose(streamID1);
if ( array ) free(array);
if ( scale ) free(scale);
cdoFinish();
return (0);
}
......@@ -5,6 +5,7 @@ bin_PROGRAMS = cdo
cdo_SOURCES = Arith.c \
Arithc.c \
Arithdays.c \
Arithlat.c \
Cat.c \
Change.c \
Comp.c \
......
......@@ -85,6 +85,7 @@ bin_PROGRAMS = cdo
cdo_SOURCES = Arith.c \
Arithc.c \
Arithdays.c \
Arithlat.c \
Cat.c \
Change.c \
Comp.c \
......@@ -248,47 +249,48 @@ bin_PROGRAMS = cdo$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS)
am_cdo_OBJECTS = Arith.$(OBJEXT) Arithc.$(OBJEXT) Arithdays.$(OBJEXT) \
Cat.$(OBJEXT) Change.$(OBJEXT) Comp.$(OBJEXT) Compc.$(OBJEXT) \
Cond.$(OBJEXT) Cond2.$(OBJEXT) Condc.$(OBJEXT) Copy.$(OBJEXT) \
Detrend.$(OBJEXT) Diff.$(OBJEXT) Enlarge.$(OBJEXT) \
Enlargegrid.$(OBJEXT) Ensstat.$(OBJEXT) Exprf.$(OBJEXT) \
Filedes.$(OBJEXT) Fillmiss.$(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) Selrec.$(OBJEXT) \
Selstat.$(OBJEXT) Seltime.$(OBJEXT) Set.$(OBJEXT) \
Setgatt.$(OBJEXT) Setgrid.$(OBJEXT) Sethalo.$(OBJEXT) \
Setmiss.$(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) 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)
Arithlat.$(OBJEXT) Cat.$(OBJEXT) Change.$(OBJEXT) \
Comp.$(OBJEXT) Compc.$(OBJEXT) Cond.$(OBJEXT) Cond2.$(OBJEXT) \
Condc.$(OBJEXT) Copy.$(OBJEXT) Detrend.$(OBJEXT) Diff.$(OBJEXT) \
Enlarge.$(OBJEXT) Enlargegrid.$(OBJEXT) Ensstat.$(OBJEXT) \
Exprf.$(OBJEXT) Filedes.$(OBJEXT) Fillmiss.$(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) \
Selrec.$(OBJEXT) Selstat.$(OBJEXT) Seltime.$(OBJEXT) \
Set.$(OBJEXT) Setgatt.$(OBJEXT) Setgrid.$(OBJEXT) \
Sethalo.$(OBJEXT) Setmiss.$(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) \
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 =
......@@ -300,64 +302,65 @@ LIBS = @LIBS@
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/Arith.Po ./$(DEPDIR)/Arithc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Arithdays.Po ./$(DEPDIR)/Cat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Change.Po ./$(DEPDIR)/Comp.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Compc.Po ./$(DEPDIR)/Cond.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Cond2.Po ./$(DEPDIR)/Condc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Copy.Po ./$(DEPDIR)/Detrend.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Diff.Po ./$(DEPDIR)/Enlarge.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Enlargegrid.Po ./$(DEPDIR)/Ensstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Exprf.Po ./$(DEPDIR)/Filedes.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Fillmiss.Po ./$(DEPDIR)/Fldrms.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Fldstat.Po ./$(DEPDIR)/Gradsdes.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Histogram.Po ./$(DEPDIR)/Info.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Input.Po ./$(DEPDIR)/Intgrid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Intgridtraj.Po ./$(DEPDIR)/Inttime.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)/Selrec.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Selstat.Po ./$(DEPDIR)/Seltime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Set.Po ./$(DEPDIR)/Setgatt.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setgrid.Po ./$(DEPDIR)/Sethalo.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setmiss.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)/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)/Arithdays.Po ./$(DEPDIR)/Arithlat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Cat.Po ./$(DEPDIR)/Change.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Comp.Po ./$(DEPDIR)/Compc.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Cond.Po ./$(DEPDIR)/Cond2.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Condc.Po ./$(DEPDIR)/Copy.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Detrend.Po ./$(DEPDIR)/Diff.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Enlarge.Po ./$(DEPDIR)/Enlargegrid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Ensstat.Po ./$(DEPDIR)/Exprf.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Filedes.Po ./$(DEPDIR)/Fillmiss.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Fldrms.Po ./$(DEPDIR)/Fldstat.Po \
@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)/Selrec.Po ./$(DEPDIR)/Selstat.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Seltime.Po ./$(DEPDIR)/Set.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Setgatt.Po ./$(DEPDIR)/Setgrid.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/Sethalo.Po ./$(DEPDIR)/Setmiss.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)/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)/readline.Po ./$(DEPDIR)/realtime.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/remaplib.Po ./$(DEPDIR)/specspace.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/table.Po ./$(DEPDIR)/timer.Po \
......@@ -436,6 +439,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arith.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arithc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arithdays.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arithlat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Cat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Change.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Comp.Po@am__quote@
......
......@@ -39,6 +39,7 @@ MODULES;
void *Arith(void *argument);
void *Arithc(void *argument);
void *Arithdays(void *argument);
void *Arithlat(void *argument);
void *Cat(void *argument);
void *Change(void *argument);
void *Comp(void *argument);
......@@ -131,6 +132,7 @@ void *Zonstat(void *argument);
#define ArithOperators {"add", "sub", "mul", "div", "min", "max", "atan2"}
#define ArithcOperators {"addc", "subc", "mulc", "divc"}
#define ArithdaysOperators {"muldpm", "divdpm", "muldpy", "divdpy"}
#define ArithlatOperators {"mulcoslat", "divcoslat"}
#define CatOperators {"cat"}
#define ChangeOperators {"chcode", "chvar", "chlevel", "chlevelc", "chlevelv"}
#define CompOperators {"eq", "ne", "le", "lt", "ge", "gt"}
......@@ -238,6 +240,7 @@ static MODULES Modules[] =
{ Arith, ArithHelp, ArithOperators, 2, 1 },
{ Arithc, ArithcHelp, ArithcOperators, 1, 1 },
{ Arithdays, ArithdaysHelp, ArithdaysOperators, 1, 1 },
{ Arithlat, NULL, ArithlatOperators, 1, 1 },
{ Cat, CopyHelp, CatOperators, -1, 1 },
{ Change, ChangeHelp, ChangeOperators, 1, 1 },
{ Comp, CompHelp, CompOperators, 2, 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