Merge seasonal analog date data. More...
#include <dsclim.h>
Go to the source code of this file.
Functions | |
int | merge_seasons (analog_day_struct analog_days_merged, analog_day_struct analog_days, int *merged_itimes, int ntimes_merged, int ntimes) |
Merge seasonal analog date data. |
Merge seasonal analog date data.
Definition in file merge_seasons.c.
int merge_seasons | ( | analog_day_struct | analog_days_merged, | |
analog_day_struct | analog_days, | |||
int * | merged_itimes, | |||
int | ntimes_merged, | |||
int | ntimes | |||
) |
Merge seasonal analog date data.
[out] | analog_days_merged | Analog days time indexes and dates with corresponding dates being downscaled, all seasons merged |
[in] | analog_days | Analog days time indexes and dates with corresponding dates being downscaled |
[in] | merged_itimes | Time index of total time vector against current merged time vector that could span less than the whole year |
[in] | ntimes_merged | Number of times of days to downscale for this period, all seasons merged |
[in] | ntimes | Number of times of days to downscale for this period |
Definition at line 58 of file merge_seasons.c.
References alloc_error(), analog_day_struct::analog_dayschoice, tstruct::day, analog_day_struct::day, analog_day_struct::day_s, tstruct::hour, analog_day_struct::metric_norm, tstruct::min, tstruct::month, analog_day_struct::month, analog_day_struct::month_s, analog_day_struct::ndayschoice, tstruct::sec, analog_day_struct::time, analog_day_struct::tindex_all, analog_day_struct::tindex_s_all, tstruct::year, analog_day_struct::year, and analog_day_struct::year_s.
Referenced by wt_downscaling().
00058 { 00067 int t; /* Time loop counter */ 00068 int i; /* Loop counter */ 00069 int curindex; /* Current index in the merged times vector */ 00070 int index_all; /* Current index in the whole time vector */ 00071 00072 /* Process each downscaled day for a specific season subperiod */ 00073 for (t=0; t<ntimes; t++) { 00074 /* Index of season-specific time into ntime_ls whole time vector */ 00075 index_all = analog_days.tindex_s_all[t]; 00076 /* Retrieve index in merge time vector from index of whole time vector ntime_ls */ 00077 curindex = merged_itimes[index_all]; 00078 /* Retrieve values */ 00079 analog_days_merged.tindex_all[curindex] = analog_days.tindex_all[t]; 00080 analog_days_merged.time[curindex] = analog_days.time[t]; 00081 analog_days_merged.year[curindex] = analog_days.year[t]; 00082 analog_days_merged.month[curindex] = analog_days.month[t]; 00083 analog_days_merged.day[curindex] = analog_days.day[t]; 00084 00085 analog_days_merged.tindex_s_all[curindex] = analog_days.tindex_s_all[t]; 00086 analog_days_merged.year_s[curindex] = analog_days.year_s[t]; 00087 analog_days_merged.month_s[curindex] = analog_days.month_s[t]; 00088 analog_days_merged.day_s[curindex] = analog_days.day_s[t]; 00089 // printf("IDM %d %d %d\n",t,curindex,index_all); 00090 analog_days_merged.ndayschoice[curindex] = analog_days.ndayschoice[t]; 00091 // printf("%d %d\n",analog_days_merged.ndayschoice[curindex],analog_days.ndayschoice[t]); 00092 if (analog_days_merged.analog_dayschoice[curindex] == NULL) { 00093 analog_days_merged.analog_dayschoice[curindex] = 00094 (tstruct *) malloc(analog_days_merged.ndayschoice[curindex] * sizeof(tstruct)); 00095 // printf("%d %d\n",analog_days_merged.ndayschoice[curindex],analog_days.ndayschoice[t]); 00096 if (analog_days_merged.analog_dayschoice[curindex] == NULL) alloc_error(__FILE__, __LINE__); 00097 } 00098 // printf("%d %d\n",analog_days_merged.ndayschoice[curindex],analog_days.ndayschoice[t]); 00099 if (analog_days_merged.metric_norm[curindex] == NULL) { 00100 analog_days_merged.metric_norm[curindex] = (float *) malloc(analog_days_merged.ndayschoice[curindex] * sizeof(float)); 00101 // printf("%d %d\n",analog_days_merged.ndayschoice[curindex],analog_days.ndayschoice[t]); 00102 if (analog_days_merged.metric_norm[curindex] == NULL) alloc_error(__FILE__, __LINE__); 00103 } 00104 // printf("%d %d\n",analog_days_merged.ndayschoice[curindex],analog_days.ndayschoice[t]); 00105 for (i=0; i<analog_days_merged.ndayschoice[curindex]; i++) { 00106 analog_days_merged.metric_norm[curindex][i] = analog_days.metric_norm[t][i]; 00107 analog_days_merged.analog_dayschoice[curindex][i].year = analog_days.analog_dayschoice[t][i].year; 00108 analog_days_merged.analog_dayschoice[curindex][i].month = analog_days.analog_dayschoice[t][i].month; 00109 analog_days_merged.analog_dayschoice[curindex][i].day = analog_days.analog_dayschoice[t][i].day; 00110 analog_days_merged.analog_dayschoice[curindex][i].hour = analog_days.analog_dayschoice[t][i].hour; 00111 analog_days_merged.analog_dayschoice[curindex][i].min = analog_days.analog_dayschoice[t][i].min; 00112 analog_days_merged.analog_dayschoice[curindex][i].sec = analog_days.analog_dayschoice[t][i].sec; 00113 } 00114 00115 } 00116 00117 /* Success status */ 00118 return 0; 00119 }