00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include <stdlib.h>
00014
00015 #include "hydrofree_mem.h"
00016 #include "hydroclimate.h"
00017 #include "hydroinout.h"
00018 #include "hydroparams.h"
00019 #include "hydrotimeser.h"
00020 #include "hydroalloc_mem.h"
00021 #include "hydroreadclimate.h"
00022
00023
00024
00025
00026 int hydrosetglobalpar()
00027 {
00028
00029 int err, verbose, dumint, i;
00030 char chs[120], dumchar;
00031 double dumlon, dumlat, dumlapserate;
00032 long counter;
00033 err = 0;
00034 dumlon = 0;
00035 verbose = 0;
00036
00037
00038
00039
00040 if (lapserateflag == 1){
00041 if (verbose) printf("Opening %s... \n",fnamelapserate);
00042 if ( (fidlapserate = fopen(fnamelapserate,"r")) == NULL) {
00043 fprintf(stderr, " HydroSetGlobalPar ERROR: Unable to open the lapserate table file %s \n",fnamelapserate);
00044 exit(-1);
00045 }
00046 dumint = 5;
00047 ep=0;
00048 for (ep=0; ep<nepochs; ep++ ){
00049 if (lon > 357.5)
00050 lon = 0.0;
00051 fgets( chs, 120, fidlapserate );
00052 fgets( chs, 120, fidlapserate );
00053 sscanf( chs, "%li\n", &counter );
00054 for (i=0; i<counter; i++)
00055 while ((dumlon < lon && dumint == 5) || (dumlat > lat && dumint == 5)) {
00056 fgets( chs, 120, fidlapserate );
00057 dumint = sscanf( chs, "%lf%c %lf%c %lf\n", &dumlon,&dumchar, &dumlat,&dumchar, &dumlapserate );
00058 if (dumlon >= lon)
00059 while (dumlat > lat && dumint == 5){
00060 fgets( chs, 120, fidlapserate );
00061 dumint = sscanf( chs, "%lf%c %lf%c %lf\n", &dumlon,&dumchar, &dumlat,&dumchar, &dumlapserate );
00062 if (dumlat <= lat){
00063 lapserate[ep] = (dumlapserate / 1000.0);
00064 i = counter;
00065 }
00066 }
00067 }
00068 if (dumint != 5){
00069 fprintf(stderr, " HydroSetGlobalPar ERROR: In lapserate table file %s \n",fnamelapserate);
00070 fprintf(stderr, " File is corrupt, Unable to read all the variables\n" );
00071 err++;
00072 }
00073 rewind(fidlapserate);
00074 }
00075 fclose(fidlapserate);
00076 }
00077
00078
00079
00080
00081 if (velpowflag == 1)
00082 for (ep=0; ep<nepochs; ep++ )
00083 if (velpow[ep] == -9999)
00084 velpow[ep] = 0.1;
00085
00086
00087
00088
00089 if (widpowflag == 1)
00090 for (ep=0; ep<nepochs; ep++ )
00091 if (widpow[ep] == -9999)
00092 widpow[ep] = 0.5;
00093
00094 for (ep=0; ep<nepochs; ep++ )
00095 if ( widpowflag == 1 || velpowflag == 1){
00096 depcof[ep] = 1/(velcof[ep]*widcof[ep]);
00097 deppow[ep] = 1 - velpow[ep] - widpow[ep];
00098 }
00099
00100 return (err);
00101 }
00102