00001
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef DRIVER_UTILITIES_H
00023 #define DRIVER_UTILITIES_H
00024
00025 #include "globals.h"
00026
00027
00028 #define Outlist_size 250
00030
00031
00032 int CalMonOut=99999;
00040 char *ModelPath, *ProjName, *DriverPath, *OS_TYPE;
00041
00042 char *OutputPath;
00048 char modelName[20], modelVers[10];
00049
00050 char modelFileName[300];
00052 int gNPtTs;
00053 int PListIndex=0;
00054 int total_memory=0;
00055 float *plot_array, gTS;
00056
00057 int gridSize;
00058 int gTempSize;
00059 UCHAR* gTemp;
00061
00062 float *floatOut;
00063 float *nc_dataRowRev;
00064 float offMap_float = -9999.0;
00066 VOIDP nalloc(unsigned mem_size, const char var_name[]);
00067 void init_pvar(VOIDP Map, UCHAR* mask, unsigned char Mtype,float iv);
00068 void read_map_dims(const char* filename);
00069
00070 void read_model_parameters(char* s_parm_name, int s_parm_relval);
00071
00072 float* get_DBase_parmOLD(const char *filename, int i0, int i1, int index);
00073 float* get_DBase_parm(const char *filename, float *dArray);
00074
00075 ViewParm *read_output_parms(void);
00076 ViewParm *readOutlist(int size);
00077
00078 int readViewParms(FILE *vpFileName, int size, ViewParm **ppview);
00079 void setPrecision(ViewParm* vp, int value);
00080 int write_map_file(const char* filename, VOIDP Map, char Mtype,
00081 int index, float scale_value, float offset_value,
00082 int bSize, unsigned char type, const char* units, int outstep, char* fileName);
00083 int read_map_file(const char* filename, VOIDP Map,
00084 unsigned char Mtype, float scale_value,
00085 float offset_value);
00086 void print_loc_ave(Point3D *vt, void* Map, char Mtype, char* mName, int tIndex);
00087 void write_output(int index, ViewParm* vp, void* Map, const char* filename, char Mtype, int step);
00088 void print_point(ViewParm *vp, void* Map, char Mtype, char* mName, int tIndex, int vpindex);
00089 void writeWindow(void* fValue, char* vName, char* desc, int x0, int y0, int N0, int N1, int index, UCHAR Mtype, UCHAR format);
00090 void calc_maxmin(ViewParm *vp, void* Map, char Mtype, char* mName, int step);
00091 void quick_look(void* Map, char* name, unsigned char Mtype, int xc, int yc, int range, unsigned char format);
00092 int iclip ( int x0, int min, int max );
00093 void make_more_points(ViewParm *vp, int ptIncr);
00094 void enc_Nb(UCHAR** sptr,SLONG value,int bytes);
00095
00096
00097 void RP_SwapFields (RPoint* thisStruct, RPoint* that);
00098 void RP_CopyFields(RPoint* thisStruct, RPoint* that);
00099 void RP_SetFields(RPoint* thisStruct, int ix, int iy, float r, float value);
00100 void RPL_AddrPoint(RPointList *thisStruct, int x, int y, float r, float value);
00101 void RPL_Sort(RPointList *thisStruct);
00102 void RPL_Free(RPointList* thisStruct);
00103 void RPL_AddrPoint(RPointList *thisStruct, int x, int y, float r, float value);
00104 RPointList* RPL_Init(int nPoints);
00105
00106 void PTS_CopyFields(PTSeries* thisStruct, PTSeries pV);
00107 void PTS_Free(PTSeries* thisStruct);
00108 void PTS_SetFields (PTSeries* thisStruct, int ix, int iy,
00109 int index, int format, int col);
00110 void PTSL_AddpTSeries(PTSeriesList* thisStruct, int x, int y, int index, int seriesNum, int col);
00111 void PTSL_Free(PTSeriesList* thisStruct);
00112 void PTSL_ReadLists(PTSeriesList* thisStruct, const char *ptsFileName,
00113 int index, float* timeStep, int* nPtTS, int col);
00114 void PTSL_CreatePointMap(PTSeriesList* pList,void* Map, unsigned char Mtype,
00115 int step, float scale);
00116 float PTSL_GetInterpolatedValue1(PTSeriesList* thisStruct, int x, int y, int step);
00117 float PTSL_GetInterpolatedValue0(PTSeriesList* thisStruct, int x, int y, int step);
00118 PTSeriesList* PTSL_Init(int nSlots, int format);
00119
00120 void calcdate(double jd, int *m, int *d, int *y, int *h, int *mi, double *sec);
00121 double julday(int mon, int day, int year, int h, int mi, double se);
00122 float FMOD( float x, float y);
00123
00124 void setup_grid();
00125 void set_env_vars(void);
00126 void set_boundary(VOIDP Map, unsigned char Mtype,float bv);
00127
00128 void fatal(const char *msg);
00129 void Exit(int code);
00130 void Copy(void *src, void *dst, int w, int n, int sw, int dw);
00131 void getInt(FILE* inFile, const char* lString, int* iValPtr);
00132 void getChar(FILE* inFile, const char* lString, char* cValPtr);
00133 void getString(FILE* inFile, const char* lString, char* inString);
00134 void getFloat(FILE* inFile, const char* lString, float* fValPtr );
00135 void setFlag(ViewParm* vp, UINT mask, int value);
00136 int getFlag(ViewParm* vp, UINT mask);
00137 int getPrecision(ViewParm* vp);
00138 int isInteger(char *target_str);
00139 int isFloat(char *target_str);
00140 int skip_white(FILE* infile);
00141 int scan_forward (FILE* infile, const char* tstring);
00142 int check_for (char *s0, const char *s1, int start, int cs, int rp);
00143 int find_char(FILE *infile, char tchar);
00144 int Round(float x);
00145 char* name_from_path(char* name);
00146 char *Scip(char *s, char SYM );
00147
00148
00149 void setup_platform();
00150 void link_edges(VOIDP Map, unsigned char Mtype);
00151
00152 float Normal(float mean,float sd);
00153 int Poisson(float mu);
00154
00155
00156
00157
00158 extern char gCArg[kCArgDepth][kCArgWidth];
00159 extern FILE* Driver_outfile;
00160
00161 extern int init_config_file(FILE *vpFile, char term1, char term2, char term3, char term4);
00162 extern int parse_packet( FILE *vpFile, int* nArgs, char* test);
00163 extern void Combine(float* fValue, char* label, int nComp, int cType, int step);
00164 extern void writeMap(char*, void*, int, unsigned char, int);
00165 extern void writeFloatMap(char*, char*, float*, int, unsigned char, int, char*,int);
00166 extern void writeFloatNetCDF(char*, char*, float*, int, unsigned char, int, char*,int);
00167 extern void writeSeries(void* fValue, char* label, char* desc, int N0, int N1, byte Mtype, byte format);
00168 extern float* readSeriesCol(char *filename, int format, int index, int* Npt, float* TStep, int col);
00169 extern byte readMap(char*, void*);
00170
00171
00172 extern int on_this_proc(int x,int y);
00173 extern void exchange_borders(UCHAR* map, int size);
00174 extern void exparam( struct nodenv* envInfo);
00175 extern void exgridsplit(int nprocs, int ndim,int nprocs2[2]);
00176 extern void exgridcoord(int pnum, int rnum[2]);
00177 extern void exgridsize( int pnum, int gsize[2],int lsize[2],int lstart[2]);
00178 extern void broadcastInt(int* iValPtr);
00179 extern int exgridinit(int dim, int* nprocs);
00180 extern void broadcastMsg( UCHAR* msgPtr);
00181 extern void fasync(FILE* file);
00182 extern void fmulti(FILE* file);
00183
00184
00185 extern float avg_Intvl;
00186 extern SeriesParm pSeries[MAX_PTSERIES];
00187 extern ViewParm *view ;
00188 extern Point2D dbgPt;
00189 extern struct nodenv env;
00190
00191 extern int gbl_size[2], lcl_size[2], lcl_start[2];
00192 extern int N_iter, istep;
00193 extern int procnum, Lprocnum, nprocs[2], recpnum[2];
00194 extern float gRTable[];
00195
00196
00197
00198 extern int ReadGlobalParms(char* s_parm_name, int s_parm_relval);
00199 extern int ReadHabParms(char* s_parm_name, int s_parm_relval);
00200 extern int ReadModExperimParms(char* s_parm_name, int s_parm_relval);
00201 extern float GP_IDW_pow;
00202
00203
00204 extern int numBasn;
00205
00206
00207 #endif