Ecological Landscape Modeling: Models Pages

unitmod.h

Go to the documentation of this file.
00001 
00012 /* General notes on revisions to this source file. 
00013        Jan 2005 v2.3.3: documentation upgrade 
00014                 - Re-organized, clarified scopes, Doxygen tags added 
00015                 - Created quasi-automated unitmod_*.h header file generation for vars and parms 
00016         Apr 2005 v2.4.4: changed init maps: icMult removed, icMacBio added
00017         May 2006 v2.5: added some debug-level output for boundary condition stage
00018         Oct 2006 v2.6.0: added more boundary condition functionality
00019                 - reinstated the ptsl (search for "v2.6 PTSL") on-the-fly spatial time series interpolators for a non-gridIO alternative for meteorological data
00020                 - added model-experiment parameters (boundary condition experiments right now)
00021         Oct 2007 v2.7.0: added functionality of output of surface water flow velocities
00022         
00023 */
00024 #ifndef UNITMOD_H
00025 #define UNITMOD_H
00026 
00027 #include "globals.h"
00028 
00029 /* non-spatial variables */
00030 
00031 float DAYJUL; 
00049 float LATRAD, SOLALPHA, SOLALTCORR, SOLBETA, SOLCOSDEC, SOLDEC, SOLDEC1, SOLELEV_SINE, SOLRADATMOS,
00050       SOLRISSET_HA, SOLRISSET_HA1; 
00051 /* float AMPL, DAYLENGTH;*/ /* unused AMPL in unused DAYLENGTH */
00052 
00053 float dispParm_scaled;/* v2.4: dispersion adjustment (calculated) parameter,  scaled for model grid (=0 for no adjustment)  */
00054 
00055 /* v2.6 */
00056 float GP_BC_SfWat_add; 
00057 float GP_BC_SfWat_addHi; 
00058 float GP_BC_SatWat_add; 
00059 float GP_BC_SfWat_targ; 
00060 int GP_BC_InputRow; 
00061 float GP_BC_Pconc; 
00062 float GP_BC_Sconc; 
00064 /* data for graph functions that interpolate the data */
00066 float g7[11][2] = { {0.0000000,0.0000000},{0.1000000,0.0200000},{0.2000000,0.0400000},{0.3000000,0.0700000},
00067     {0.4000000,0.1250000},{0.5000000,0.2150000},{0.6000000,0.3450000},{0.7000000,0.5750000},
00068     {0.8000000,0.8550000},{0.9000000,0.9850000},{1.0000000,1.0000000} };
00070 float g8[11][2] = { {0.0000000,0.0050000},{0.1000000,0.0100000},{0.2000000,0.0400000},{0.3000000,0.1000000},
00071     {0.4000000,0.2800000},{0.5000000,0.7150000},{0.6000000,0.8650000},{0.7000000,0.9350000},
00072     {0.8000000,0.9750000},{0.9000000,0.9950000},{1.0000000,1.0000000} };
00073 
00074 
00075 /* functions */
00076 int call_cell_dyn(int sector,int step);
00077 
00078 void cell_dyn1(int step);
00079 void cell_dyn2(int step);
00080 void cell_dyn4(int step);
00081 void horizFlow(int step);
00082 void cell_dyn7(int step);
00083 void cell_dyn8(int step);
00084 void cell_dyn9(int step);
00085 void cell_dyn10(int step);
00086 void cell_dyn12(int step);
00087 void cell_dyn13(int step);
00088 
00089 float tempCF(int form, float c1, float topt, float tmin, float tmax, float tempC);
00090 
00091 void init_static_data(void);
00092 void init_dynam_data(void);
00093 void init_eqns(void);
00094 void init_canals(int irun);
00095 void init_succession(void);
00096 void reinitBIR(void);
00097 void reinitCanals(void);
00098 
00099 void gen_output(int step, ViewParm *view);
00100 
00101 void ReadGlobalParms(char* s_parm_name, int s_parm_relval);
00102 void ReadHabParms(char* s_parm_name, int s_parm_relval);
00103 void ReadModExperimParms(char* s_parm_name, int s_parm_relval); /* v2.6 added */
00104 
00105 void PtInterp_read(void);
00106 void get_map_dims(void);
00107 void alloc_memory();
00108 float graph7(unsigned char y, float x);
00109 float graph8(unsigned char y, float x);
00110 
00111 
00112 /* **** externs **** */
00113 
00114 /* from success.h */
00115 extern void HabSwitch_Init( void );
00116 extern unsigned char HabSwitch(int ix, int iy, float *Water, float *Nutrient,
00117                                int *Fire, float *Salinity, unsigned char *HAB);
00118 
00119 /* from watmgmt.h */
00120 extern void Run_Canal_Network(float *SWH, float *ElevMap, float *MC,
00121                               float *GWV, float *poros, float *GWcond,
00122                               double *NA, double *PA, double *SA,
00123                               double *GNA, double *GPA, double *GSA,
00124                               float *Unsat, float *sp_yield);
00125 extern void Canal_Network_Init(float baseDatum, float *elev ); 
00126 extern void CanalReInit();
00127 
00128 
00129 /* from driver_utilities.h */
00130 extern int CalMonOut;
00131 extern void getInt(FILE* inFile, const char* lString, int* iValPtr);
00132 extern void read_map_dims(const char* filename);
00133 extern void write_output(int index, ViewParm* vp, void* Map,
00134                          const char* filename, char Mtype, int step);
00135 extern void getChar(FILE* inFile, const char* lString, char* cValPtr);
00136 extern void init_pvar(VOIDP Map, UCHAR* mask, unsigned char Mtype,float iv);
00137 extern int read_map_file(const char* filename, VOIDP Map,
00138                          unsigned char Mtype, float scale_value, float offset_value);
00139 extern int scan_forward (FILE* infile, const char* tstring);
00140 //extern float* get_DBase_parmOLD(const char *filename, int i0, int i1, int index);
00141 //extern float* get_DBase_parm(const char *filename, float *dArray);
00142 extern VOIDP nalloc(unsigned mem_size, const char var_name[]);
00143 extern float FMOD( float x, float y);
00144 
00145 /* v2.6 PTSL */
00146 extern void PTSL_ReadLists(PTSeriesList* thisStruct, const char *ptsFileName,
00147                            int index, float* timeStep, int* nPtTS, int col);
00148 extern void PTSL_CreatePointMap(PTSeriesList* pList,void* Map, unsigned char Mtype,
00149                                 int step, float scale);
00150 /* points list for meteorological data */
00151 PTSeriesList *pTSList6;
00152 PTSeriesList *pTSList5;
00153 PTSeriesList *pTSList4;
00154 PTSeriesList *pTSList3;
00155 /* points list for non-gridIO rainfall data */
00156 PTSeriesList *pTSList2;
00157 
00158 float Timestep0 = 1.0, TMod0 = 0; int NPtTS0 = 0, TIndex0 = 0;
00159 float Timestep1 = 1.0, TMod1 = 0; int NPtTS1 = 0, TIndex1 = 0;
00160 float Timestep2 = 1.0, TMod2 = 0; int NPtTS2 = 0, TIndex2 = 0;
00161 float Timestep3 = 1.0, TMod3 = 0; int NPtTS3 = 0, TIndex3 = 0;
00162 float Timestep4 = 1.0, TMod4 = 0; int NPtTS4 = 0, TIndex4 = 0;
00163 float Timestep5 = 1.0, TMod5 = 0; int NPtTS5 = 0, TIndex5 = 0;
00164 float Timestep6 = 1.0, TMod6 = 0; int NPtTS6 = 0, TIndex6 = 0;
00165 /* end of v2.6 PTSL */
00166 
00167 
00168 /* from budgstats.h */
00169 extern basnDef **basn_list;
00170 extern basnDef *basins;
00171 
00172 extern void stats(int step);
00173 extern void alloc_mem_stats(void);
00174 extern void BIRinit(void);
00175 extern void BIRoutfiles(void);
00176 extern void BIRstats_reset(void);
00177 extern void BIRbudg_reset(void);
00178 extern void Cell_reset_avg(void);
00179 extern void Cell_reset_hydper(void);
00180 
00181 /* from fluxes.h */
00182 extern void Flux_SWater(int it, float *SURFACE_WAT,float *SED_ELEV,float *HYD_MANNINGS_N,
00183                    double *STUF1, double *STUF2, double *STUF3, float *SfWat_vel_day);
00184 extern void Flux_GWater(int it, float *SatWat, float *Unsat, float *SfWat,
00185                         float *rate, float *poros,
00186                         float *sp_yield, float *elev,
00187                         double *gwSTUF1, double *gwSTUF2, double *gwSTUF3,
00188                         double *swSTUF1, double *swSTUF2, double *swSTUF3);
00189 
00190 /* from generic_driver.h */
00191 extern int WatMgmtOn, ESPmodeON, HabSwitchOn;
00192 extern int avgPrint; /* v2.2.1note true/false flag to indicate whether it is the time (day) to finalize 
00193                                         and print averages for the current interval  */
00194 
00195 /* from driver_utilities.h */
00196 extern char *OutputPath, *ProjName;
00197 
00198 /* from serial.h */
00199 extern float* get_hab_parm(char* s_parm_name, int s_parm_relval, char* parmName);
00200 extern float get_global_parm(char* s_parm_name, int s_parm_relval, char* parmName );
00201 extern float get_modexperim_parm(char* s_parm_name, int s_parm_relval, char* parmName );
00202 
00203 /* from stage.h, rain.h, evap.h */
00204 extern int stage_data_wmm(float*);
00205 extern int rain_data_wmm(float*);
00206 extern int evap_data_wmm(float*);
00207 
00208 
00209 #endif /* UNITMOD_H */

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