00001
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef UNITMOD_H
00025 #define UNITMOD_H
00026
00027 #include "globals.h"
00028
00029
00030
00031 float DAYJUL;
00049 float LATRAD, SOLALPHA, SOLALTCORR, SOLBETA, SOLCOSDEC, SOLDEC, SOLDEC1, SOLELEV_SINE, SOLRADATMOS,
00050 SOLRISSET_HA, SOLRISSET_HA1;
00051
00052
00053 float dispParm_scaled;
00054
00055
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
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
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);
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
00113
00114
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
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
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
00141
00142 extern VOIDP nalloc(unsigned mem_size, const char var_name[]);
00143 extern float FMOD( float x, float y);
00144
00145
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
00151 PTSeriesList *pTSList6;
00152 PTSeriesList *pTSList5;
00153 PTSeriesList *pTSList4;
00154 PTSeriesList *pTSList3;
00155
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
00166
00167
00168
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
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
00191 extern int WatMgmtOn, ESPmodeON, HabSwitchOn;
00192 extern int avgPrint;
00193
00194
00195
00196 extern char *OutputPath, *ProjName;
00197
00198
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
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