Ecological Landscape Modeling: Models Pages

driver_utilities.h

Go to the documentation of this file.
00001 
00012 /* General notes on revisions to this source file. 
00013        Nov/Dec 2004 v2.3.2: documentation upgrade 
00014                 - Re-organized, clarified scopes, Doxygen tags added 
00015        Oct 2006 v2.6.0 - increased functionality for boundary conditions
00016              - added extern to ReadModExperimParms() if needed for research experiments
00017        June 2008 v2.8.2: expanded options for spatial map outputs
00018              - can output netCDF floating point, generic binary floating point, HDF uchar ints
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               /* TODO: develop flexible output of calendar-based and julian-based outsteps (jan 11, 2005) */
00031               /* kluge here in defining the int for the Model.outList that will denote calendar-month output */
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 /* v2.8.2 new temp array for output - all variables' arrays are 2 rows and 2 cols larger than the actual data */
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); /* v2.8.2 added units, outstep, netCDF 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 /* below are unused or effectively unused  */
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 /* above are unused or effectively unused  */
00155 
00156 /* externs */
00157 /* from serial.h */
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); /* new for v.2.8.2 */
00166 extern void writeFloatNetCDF(char*, char*, float*, int, unsigned char, int, char*,int); /* new for v.2.8.2 */
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 /* more from serial.h: parallel-related stuff, effectively not functioning & ~undocumented for parallel */
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 /* from generic_driver.h */
00185 extern float avg_Intvl; /* used here as part of a TODO and kluge */
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 /* from unitmod.h */
00197 //extern int ReadParms(FILE *parmFile);
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); /* v2.6 */
00201 extern float GP_IDW_pow;
00202 
00203 /* from budgstats.h */
00204 extern int numBasn;
00205 
00206 
00207 #endif  /* DRIVER_UTILITIES_H */

Generated on Sat Jan 7 14:04:15 2012 for ELM source code by  doxygen 1.5.6