Free main data structure. More...
#include <dsclim.h>
Go to the source code of this file.
Functions | |
void | free_main_data (data_struct *data) |
Free main data structure. |
Free main data structure.
Definition in file free_main_data.c.
void free_main_data | ( | data_struct * | data | ) |
Free main data structure.
[in] | data | MASTER data structure. |
Definition at line 66 of file free_main_data.c.
References var_struct::acronym, var_struct::altitude, var_struct::altitudename, field_struct::analog_days, field_struct::analog_days_year, analog_day_struct::analog_dayschoice, conf_struct::analog_file_ctrl, conf_struct::analog_file_other, conf_struct::analog_save, conf_struct::cal_type, learning_data_struct::class_clusters, conf_struct::classif_type, var_struct::clim, clim_info_struct::clim_filein_ls, clim_info_struct::clim_fileout_ls, conf_struct::clim_filter_type, field_data_struct::clim_info, clim_info_struct::clim_nomvar_ls, clim_info_struct::clim_provided, clim_info_struct::clim_save, conf_struct::clustname, data_struct::conf, conf_struct::config, info_struct::contact_email, info_struct::contact_name, info_field_struct::coordinates, mask_struct::coords, proj_struct::coords, info_struct::country, info_struct::creator_email, info_struct::creator_name, info_struct::creator_url, CTRL_FIELD_LS, learning_struct::data, field_struct::data, time_vect_struct::day, analog_day_struct::day, analog_day_struct::day_s, downscale_struct::days_class_clusters, downscale_struct::days_class_clusters_all, var_struct::delta, downscale_struct::delta, downscale_struct::delta_all, downscale_struct::delta_dayschoice, downscale_struct::delta_dayschoice_all, info_struct::description, var_struct::dimcoords, mask_struct::dimcoords, var_struct::dimxname, mask_struct::dimxname, reg_struct::dimxname, field_data_struct::dimxname, conf_struct::dimxname_eof, var_struct::dimyname, mask_struct::dimyname, reg_struct::dimyname, field_data_struct::dimyname, conf_struct::dimyname_eof, downscale_struct::dist, downscale_struct::dist_all, field_data_struct::down, period_struct::downscale, info_struct::downscaling_forcing, learning_eof_struct::eof, eof_info_struct::eof_coords, field_data_struct::eof_data, eof_info_struct::eof_filein_ls, field_data_struct::eof_info, eof_data_struct::eof_ls, eof_data_struct::eof_nomvar_ls, eof_info_struct::eof_project, conf_struct::eofname, var_struct::factor, FALSE, mask_struct::field, data_struct::field, field_data_struct::field_eof_ls, FIELD_LS, field_data_struct::field_ls, mask_struct::filename, reg_struct::filename, learning_eof_struct::filename_eof, field_data_struct::filename_ls, learning_struct::filename_open_clust_learn, learning_struct::filename_open_learn, learning_struct::filename_open_weight, learning_struct::filename_rea_sup, learning_struct::filename_save_clust_learn, reg_struct::filename_save_ctrl_reg, learning_struct::filename_save_learn, reg_struct::filename_save_other_reg, learning_struct::filename_save_weight, var_struct::frequency, info_field_struct::grid_mapping, proj_struct::grid_mapping_name, var_struct::height, info_field_struct::height, time_vect_struct::hour, data_struct::info, field_data_struct::info, eof_info_struct::info, info_struct::institution, info_struct::institution_model, info_struct::keywords, mask_struct::lat, reg_struct::lat, learning_struct::lat, field_struct::lat_eof_ls, field_struct::lat_ls, var_struct::latname, mask_struct::latname, reg_struct::latname, field_data_struct::latname, conf_struct::latname_eof, data_struct::learning, conf_struct::learning_maskfile, learning_struct::learning_provided, learning_struct::learning_save, mask_struct::lon, reg_struct::lon, learning_struct::lon, field_struct::lon_eof_ls, field_struct::lon_ls, info_field_struct::long_name, var_struct::lonname, mask_struct::lonname, reg_struct::lonname, field_data_struct::lonname, conf_struct::lonname_eof, mask_struct::maskname, downscale_struct::mean, downscale_struct::mean_dist, info_struct::member, analog_day_struct::metric_norm, time_vect_struct::minutes, info_struct::model, season_struct::month, time_vect_struct::month, analog_day_struct::month, analog_day_struct::month_s, field_struct::n_ls, var_struct::name, proj_struct::name, NCAT, analog_day_struct::ndayschoice, var_struct::netcdfname, season_struct::nmonths, var_struct::nobs_var, learning_struct::nomvar_class_clusters, learning_eof_struct::nomvar_eof, field_data_struct::nomvar_ls, learning_struct::nomvar_pc_normalized_var, learning_struct::nomvar_precip_index, learning_struct::nomvar_precip_index_obs, learning_struct::nomvar_precip_reg, learning_struct::nomvar_precip_reg_acor, learning_struct::nomvar_precip_reg_cst, learning_struct::nomvar_precip_reg_dist, learning_struct::nomvar_precip_reg_err, learning_struct::nomvar_precip_reg_rsq, learning_struct::nomvar_precip_reg_vif, learning_struct::nomvar_rea_sup, learning_eof_struct::nomvar_sing, learning_struct::nomvar_sup_index, learning_struct::nomvar_sup_index_mean, learning_struct::nomvar_sup_index_var, learning_struct::nomvar_sup_val, learning_struct::nomvar_time, learning_struct::nomvar_weight, conf_struct::nperiods, conf_struct::nseasons, analog_day_struct::ntime, learning_struct::obs, learning_struct::obs_dimxname, learning_struct::obs_dimyname, learning_struct::obs_eofname, learning_struct::obs_latname, learning_struct::obs_lonname, learning_struct::obs_timename, conf_struct::obs_var, info_struct::other_contact_email, info_struct::other_contact_name, var_struct::output, conf_struct::output_only, conf_struct::output_path, var_struct::path, learning_struct::pc_normalized_var, conf_struct::period, conf_struct::period_ctrl, var_struct::post, learning_data_struct::precip_index, field_struct::precip_index, learning_data_struct::precip_index_obs, learning_data_struct::precip_reg, learning_data_struct::precip_reg_autocor, learning_data_struct::precip_reg_cst, learning_data_struct::precip_reg_dist, learning_data_struct::precip_reg_err, learning_data_struct::precip_reg_rsq, learning_data_struct::precip_reg_vif, info_struct::processor, var_struct::proj, mask_struct::proj, field_struct::proj, conf_struct::ptsname, reg_struct::ptsname, learning_struct::rea, learning_struct::rea_coords, learning_struct::rea_dimxname, learning_struct::rea_dimyname, learning_struct::rea_gridname, learning_struct::rea_latname, learning_struct::rea_lonname, learning_struct::rea_timename, data_struct::reg, reg_struct::reg_save, info_struct::scenario, info_struct::scenario_co2, conf_struct::season, data_struct::secondary_mask, time_vect_struct::seconds, learning_eof_struct::sing, eof_data_struct::sing_ls, eof_data_struct::sing_nomvar_ls, downscale_struct::smean, downscale_struct::smean_2d, downscale_struct::smean_norm, info_struct::software, info_struct::summary, info_struct::summary_french, learning_data_struct::sup_index, learning_struct::sup_lat, learning_struct::sup_latname, learning_struct::sup_lon, learning_struct::sup_lonname, learning_data_struct::sup_val, downscale_struct::sup_val_norm, downscale_struct::svar_2d, var_struct::template, learning_data_struct::time, analog_day_struct::time, field_struct::time_ls, learning_struct::time_s, learning_eof_struct::time_s, learning_data_struct::time_s, field_struct::time_s, conf_struct::time_units, var_struct::timename, reg_struct::timename, field_data_struct::timename, info_struct::timestep, analog_day_struct::tindex, analog_day_struct::tindex_all, analog_day_struct::tindex_dayschoice, analog_day_struct::tindex_s_all, info_struct::title, info_struct::title_french, TRUE, var_struct::units, info_field_struct::units, mask_struct::use_mask, downscale_struct::var, downscale_struct::var_dist, downscale_struct::var_pc_norm, info_struct::version, learning_data_struct::weight, time_vect_struct::year, analog_day_struct::year, and analog_day_struct::year_s.
Referenced by main().
00066 { 00067 00072 int i; /* Loop counter */ 00073 int j; /* Loop counter */ 00074 int s; /* Loop counter */ 00075 int tt; /* Loop counter */ 00076 int end_cat; /* End category to process */ 00077 00078 if ( (data->conf->analog_save == TRUE || data->conf->output_only == TRUE) && data->conf->period_ctrl->downscale == TRUE ) 00079 (void) free(data->conf->analog_file_ctrl); 00080 if (data->conf->analog_save == TRUE || data->conf->output_only == TRUE) 00081 (void) free(data->conf->analog_file_other); 00082 00083 for (i=0; i<NCAT; i++) { 00084 00085 for (j=0; j<data->field[i].n_ls; j++) { 00086 00087 if (data->field[i].data[j].clim_info->clim_provided == TRUE) 00088 (void) free(data->field[i].data[j].clim_info->clim_filein_ls); 00089 if (data->field[i].data[j].clim_info->clim_save == TRUE) 00090 (void) free(data->field[i].data[j].clim_info->clim_fileout_ls); 00091 if (data->field[i].data[j].clim_info->clim_save == TRUE || data->field[i].data[j].clim_info->clim_provided == TRUE) 00092 (void) free(data->field[i].data[j].clim_info->clim_nomvar_ls); 00093 (void) free(data->field[i].data[j].clim_info); 00094 00095 if (data->field[i].data[j].eof_info->eof_project == TRUE) { 00096 (void) free(data->field[i].data[j].eof_info->eof_coords); 00097 (void) free(data->field[i].data[j].eof_info->eof_filein_ls); 00098 (void) free(data->field[i].data[j].eof_data->eof_nomvar_ls); 00099 (void) free(data->field[i].data[j].eof_data->sing_nomvar_ls); 00100 00101 if (i == 0 || i == 1) 00102 (void) free(data->field[i].data[j].field_eof_ls); 00103 (void) free(data->field[i].data[j].eof_data->eof_ls); 00104 (void) free(data->field[i].data[j].eof_data->sing_ls); 00105 00106 if ((i == 0 || i == 1) && data->conf->output_only != TRUE) { 00107 (void) free(data->field[i].data[j].eof_info->info->units); 00108 (void) free(data->field[i].data[j].eof_info->info->height); 00109 (void) free(data->field[i].data[j].eof_info->info->coordinates); 00110 (void) free(data->field[i].data[j].eof_info->info->grid_mapping); 00111 (void) free(data->field[i].data[j].eof_info->info->long_name); 00112 } 00113 } 00114 (void) free(data->field[i].data[j].eof_info->info); 00115 (void) free(data->field[i].data[j].eof_info); 00116 (void) free(data->field[i].data[j].eof_data); 00117 00118 if (data->conf->output_only != TRUE) { 00119 (void) free(data->field[i].data[j].info->coordinates); 00120 (void) free(data->field[i].data[j].info->grid_mapping); 00121 (void) free(data->field[i].data[j].info->units); 00122 (void) free(data->field[i].data[j].info->height); 00123 (void) free(data->field[i].data[j].info->long_name); 00124 } 00125 00126 (void) free(data->field[i].data[j].info); 00127 (void) free(data->field[i].data[j].nomvar_ls); 00128 (void) free(data->field[i].data[j].filename_ls); 00129 (void) free(data->field[i].data[j].dimyname); 00130 (void) free(data->field[i].data[j].dimxname); 00131 (void) free(data->field[i].data[j].latname); 00132 (void) free(data->field[i].data[j].lonname); 00133 (void) free(data->field[i].data[j].timename); 00134 00135 if (data->field[i].proj[j].name != NULL) 00136 (void) free(data->field[i].proj[j].name); 00137 if (data->field[i].proj[j].grid_mapping_name != NULL) 00138 (void) free(data->field[i].proj[j].grid_mapping_name); 00139 if (data->field[i].proj[j].coords != NULL) 00140 (void) free(data->field[i].proj[j].coords); 00141 00142 if (data->conf->output_only != TRUE) { 00143 for (s=0; s<data->conf->nseasons; s++) { 00144 if (i == 0 || (i == 1 && data->conf->period_ctrl->downscale == TRUE)) { 00145 (void) free(data->field[i].data[j].down->days_class_clusters[s]); 00146 (void) free(data->field[i].data[j].down->dist[s]); 00147 } 00148 if (i == 1) { 00149 (void) free(data->field[i].data[j].down->mean_dist[s]); 00150 (void) free(data->field[i].data[j].down->var_dist[s]); 00151 } 00152 } 00153 } 00154 if (i == 0 || i == 1) { 00155 (void) free(data->field[i].data[j].down->mean_dist); 00156 (void) free(data->field[i].data[j].down->var_dist); 00157 } 00158 if ( i == 0 || i == 1) { 00159 if (i == 0 || (i == 1 && data->conf->period_ctrl->downscale == TRUE)) { 00160 if (data->conf->output_only != TRUE) { 00161 (void) free(data->field[i].data[j].down->dist_all); 00162 (void) free(data->field[i].data[j].down->days_class_clusters_all); 00163 } 00164 } 00165 (void) free(data->field[i].data[j].down->dist); 00166 (void) free(data->field[i].data[j].down->days_class_clusters); 00167 (void) free(data->field[i].data[j].down->var_pc_norm); 00168 if (i == 0 || (i == 1 && data->conf->period_ctrl->downscale == TRUE)) { 00169 (void) free(data->field[i+2].data[j].down->delta_all); 00170 for (tt=0; tt<data->field[i].analog_days_year.ntime; tt++) 00171 (void) free(data->field[i+2].data[j].down->delta_dayschoice_all[tt]); 00172 (void) free(data->field[i+2].data[j].down->delta_dayschoice_all); 00173 } 00174 00175 /* 00176 if ((data->conf->period_ctrl->downscale == TRUE && i == 1) || i == 0) 00177 if (data->conf->output_only != TRUE) { 00178 for (s=0; s<data->conf->nseasons; s++) { 00179 for (tt=0; tt<data->field[i].analog_days[s].ntime; tt++) { 00180 (void) free(data->field[i].data[j].down->delta_dayschoice[s][tt]); 00181 (void) free(data->field[i].data[j].down->delta[s]); 00182 } 00183 } 00184 (void) free(data->field[i].data[j].down->delta_dayschoice[s]); 00185 } 00186 */ 00187 } 00188 else { 00189 if (data->conf->period_ctrl->downscale == TRUE || i == 2) 00190 if (data->conf->output_only != TRUE) 00191 for (s=0; s<data->conf->nseasons; s++) { 00192 (void) free(data->field[i].data[j].down->smean_norm[s]); 00193 (void) free(data->field[i].data[j].down->sup_val_norm[s]); 00194 } 00195 if (data->conf->output_only != TRUE) { 00196 if (i == 3) { 00197 /* Only for secondary large-scale control field */ 00198 for (s=0; s<data->conf->nseasons; s++) { 00199 (void) free(data->field[i].data[j].down->smean_2d[s]); 00200 (void) free(data->field[i].data[j].down->svar_2d[s]); 00201 } 00202 (void) free(data->field[i].data[j].down->smean_2d); 00203 (void) free(data->field[i].data[j].down->svar_2d); 00204 } 00205 (void) free(data->field[i].data[j].down->smean); 00206 } 00207 00208 (void) free(data->field[i].data[j].down->smean_norm); 00209 (void) free(data->field[i].data[j].down->sup_val_norm); 00210 (void) free(data->field[i].data[j].down->mean); 00211 (void) free(data->field[i].data[j].down->var); 00212 (void) free(data->field[i].data[j].down->delta); 00213 (void) free(data->field[i].data[j].down->delta_dayschoice); 00214 } 00215 00216 (void) free(data->field[i].data[j].down); 00217 00218 (void) free(data->field[i].data[j].field_ls); 00219 } 00220 00221 (void) free(data->field[i].lat_ls); 00222 (void) free(data->field[i].lon_ls); 00223 00224 if (data->field[i].lon_eof_ls != NULL) 00225 (void) free(data->field[i].lon_eof_ls); 00226 if (data->field[i].lat_eof_ls != NULL) 00227 (void) free(data->field[i].lat_eof_ls); 00228 00229 if (data->conf->period_ctrl->downscale == TRUE) 00230 end_cat = CTRL_FIELD_LS; 00231 else 00232 end_cat = FIELD_LS; 00233 if (i >= FIELD_LS && i <= end_cat) { 00234 if (data->field[i].n_ls > 0) { 00235 if (data->conf->output_only != TRUE) { 00236 for (s=0; s<data->conf->nseasons; s++) { 00237 (void) free(data->field[i].precip_index[s]); 00238 (void) free(data->field[i].analog_days[s].tindex); 00239 (void) free(data->field[i].analog_days[s].tindex_all); 00240 (void) free(data->field[i].analog_days[s].tindex_s_all); 00241 (void) free(data->field[i].analog_days[s].time); 00242 (void) free(data->field[i].analog_days[s].year); 00243 (void) free(data->field[i].analog_days[s].month); 00244 (void) free(data->field[i].analog_days[s].day); 00245 (void) free(data->field[i].analog_days[s].year_s); 00246 (void) free(data->field[i].analog_days[s].month_s); 00247 (void) free(data->field[i].analog_days[s].day_s); 00248 for (tt=0; tt<data->field[i].analog_days[s].ntime; tt++) { 00249 if (data->field[i].analog_days[s].analog_dayschoice[tt] != NULL) 00250 (void) free(data->field[i].analog_days[s].analog_dayschoice[tt]); 00251 if (data->field[i].analog_days[s].metric_norm[tt] != NULL) 00252 (void) free(data->field[i].analog_days[s].metric_norm[tt]); 00253 if (data->field[i].analog_days[s].tindex_dayschoice[tt] != NULL) 00254 (void) free(data->field[i].analog_days[s].tindex_dayschoice[tt]); 00255 } 00256 (void) free(data->field[i].analog_days[s].analog_dayschoice); 00257 (void) free(data->field[i].analog_days[s].tindex_dayschoice); 00258 (void) free(data->field[i].analog_days[s].metric_norm); 00259 (void) free(data->field[i].analog_days[s].ndayschoice); 00260 } 00261 (void) free(data->field[i].analog_days_year.tindex); 00262 (void) free(data->field[i].analog_days_year.tindex_all); 00263 (void) free(data->field[i].analog_days_year.tindex_s_all); 00264 (void) free(data->field[i].analog_days_year.time); 00265 for (tt=0; tt<data->field[i].analog_days_year.ntime; tt++) { 00266 if (data->field[i].analog_days_year.analog_dayschoice[tt] != NULL) 00267 (void) free(data->field[i].analog_days_year.analog_dayschoice[tt]); 00268 if (data->field[i].analog_days_year.metric_norm[tt] != NULL) 00269 (void) free(data->field[i].analog_days_year.metric_norm[tt]); 00270 } 00271 (void) free(data->field[i].analog_days_year.analog_dayschoice); 00272 (void) free(data->field[i].analog_days_year.tindex_dayschoice); 00273 (void) free(data->field[i].analog_days_year.metric_norm); 00274 (void) free(data->field[i].analog_days_year.ndayschoice); 00275 } 00276 (void) free(data->field[i].analog_days_year.year); 00277 (void) free(data->field[i].analog_days_year.month); 00278 (void) free(data->field[i].analog_days_year.day); 00279 (void) free(data->field[i].analog_days_year.year_s); 00280 (void) free(data->field[i].analog_days_year.month_s); 00281 (void) free(data->field[i].analog_days_year.day_s); 00282 } 00283 } 00284 00285 (void) free(data->field[i].precip_index); 00286 00287 if (data->field[i].n_ls > 0) { 00288 (void) free(data->field[i].data); 00289 if (data->conf->output_only != TRUE) { 00290 (void) free(data->field[i].time_s->year); 00291 (void) free(data->field[i].time_s->month); 00292 (void) free(data->field[i].time_s->day); 00293 (void) free(data->field[i].time_s->hour); 00294 (void) free(data->field[i].time_s->minutes); 00295 (void) free(data->field[i].time_s->seconds); 00296 } 00297 (void) free(data->field[i].proj); 00298 } 00299 (void) free(data->field[i].time_s); 00300 (void) free(data->field[i].time_ls); 00301 } 00302 00303 for (i=0; i<NCAT; i++) 00304 (void) free(data->field[i].analog_days); 00305 00306 for (s=0; s<data->conf->nseasons; s++) { 00307 if (data->conf->output_only != TRUE) { 00308 (void) free(data->learning->data[s].time_s->year); 00309 (void) free(data->learning->data[s].time_s->month); 00310 (void) free(data->learning->data[s].time_s->day); 00311 (void) free(data->learning->data[s].time_s->hour); 00312 (void) free(data->learning->data[s].time_s->minutes); 00313 (void) free(data->learning->data[s].time_s->seconds); 00314 (void) free(data->learning->data[s].time); 00315 (void) free(data->learning->data[s].class_clusters); 00316 } 00317 (void) free(data->learning->data[s].time_s); 00318 if (data->conf->season[s].nmonths > 0) 00319 (void) free(data->conf->season[s].month); 00320 00321 if (data->conf->output_only != TRUE) { 00322 (void) free(data->learning->data[s].weight); 00323 (void) free(data->learning->data[s].precip_reg); 00324 if (data->learning->data[s].precip_reg_dist != NULL) 00325 (void) free(data->learning->data[s].precip_reg_dist); 00326 (void) free(data->learning->data[s].precip_reg_cst); 00327 if (data->learning->data[s].precip_reg_err != NULL) 00328 (void) free(data->learning->data[s].precip_reg_err); 00329 if (data->learning->learning_provided == FALSE) { 00330 (void) free(data->learning->data[s].precip_reg_rsq); 00331 (void) free(data->learning->data[s].precip_reg_vif); 00332 (void) free(data->learning->data[s].precip_reg_autocor); 00333 } 00334 (void) free(data->learning->data[s].precip_index); 00335 (void) free(data->learning->data[s].sup_index); 00336 if (data->learning->data[s].sup_val != NULL) 00337 (void) free(data->learning->data[s].sup_val); 00338 } 00339 } 00340 00341 if (data->learning->learning_provided == FALSE) { 00342 (void) free(data->learning->obs->filename_eof); 00343 (void) free(data->learning->obs->nomvar_eof); 00344 (void) free(data->learning->obs->nomvar_sing); 00345 (void) free(data->learning->obs->eof); 00346 (void) free(data->learning->obs->sing); 00347 00348 for (s=0; s<data->conf->nseasons; s++) 00349 (void) free(data->learning->data[s].precip_index_obs); 00350 00351 (void) free(data->learning->obs->time_s->year); 00352 (void) free(data->learning->obs->time_s->month); 00353 (void) free(data->learning->obs->time_s->day); 00354 (void) free(data->learning->obs->time_s->hour); 00355 (void) free(data->learning->obs->time_s->minutes); 00356 (void) free(data->learning->obs->time_s->seconds); 00357 (void) free(data->learning->obs->time_s); 00358 00359 (void) free(data->learning->rea->time_s->year); 00360 (void) free(data->learning->rea->time_s->month); 00361 (void) free(data->learning->rea->time_s->day); 00362 (void) free(data->learning->rea->time_s->hour); 00363 (void) free(data->learning->rea->time_s->minutes); 00364 (void) free(data->learning->rea->time_s->seconds); 00365 (void) free(data->learning->rea->time_s); 00366 00367 (void) free(data->learning->rea->filename_eof); 00368 (void) free(data->learning->rea->nomvar_eof); 00369 (void) free(data->learning->rea->nomvar_sing); 00370 (void) free(data->learning->rea->eof); 00371 (void) free(data->learning->rea->sing); 00372 00373 (void) free(data->learning->obs); 00374 (void) free(data->learning->rea); 00375 00376 (void) free(data->learning->nomvar_rea_sup); 00377 (void) free(data->learning->filename_rea_sup); 00378 (void) free(data->learning->rea_coords); 00379 (void) free(data->learning->rea_gridname); 00380 (void) free(data->learning->rea_dimxname); 00381 (void) free(data->learning->rea_dimyname); 00382 (void) free(data->learning->rea_lonname); 00383 (void) free(data->learning->rea_latname); 00384 (void) free(data->learning->rea_timename); 00385 00386 if (data->learning->sup_lon != NULL) 00387 (void) free(data->learning->sup_lon); 00388 if (data->learning->sup_lat != NULL) 00389 (void) free(data->learning->sup_lat); 00390 00391 (void) free(data->learning->obs_dimxname); 00392 (void) free(data->learning->obs_dimyname); 00393 (void) free(data->learning->obs_lonname); 00394 (void) free(data->learning->obs_latname); 00395 (void) free(data->learning->obs_timename); 00396 (void) free(data->learning->obs_eofname); 00397 00398 if (data->learning->lon != NULL) 00399 (void) free(data->learning->lon); 00400 if (data->learning->lat != NULL) 00401 (void) free(data->learning->lat); 00402 } 00403 00404 if (data->conf->output_only != TRUE) { 00405 (void) free(data->learning->time_s->year); 00406 (void) free(data->learning->time_s->month); 00407 (void) free(data->learning->time_s->day); 00408 (void) free(data->learning->time_s->hour); 00409 (void) free(data->learning->time_s->minutes); 00410 (void) free(data->learning->time_s->seconds); 00411 } 00412 00413 (void) free(data->learning->time_s); 00414 00415 if (data->learning->learning_provided == TRUE && data->conf->output_only != TRUE) { 00416 (void) free(data->learning->filename_open_weight); 00417 (void) free(data->learning->filename_open_learn); 00418 (void) free(data->learning->filename_open_clust_learn); 00419 } 00420 00421 if (data->conf->output_only != TRUE) 00422 (void) free(data->learning->pc_normalized_var); 00423 00424 (void) free(data->learning->nomvar_time); 00425 (void) free(data->learning->nomvar_weight); 00426 (void) free(data->learning->nomvar_class_clusters); 00427 (void) free(data->learning->nomvar_precip_reg); 00428 (void) free(data->learning->nomvar_precip_reg_dist); 00429 (void) free(data->learning->nomvar_precip_reg_cst); 00430 (void) free(data->learning->nomvar_precip_reg_rsq); 00431 (void) free(data->learning->nomvar_precip_reg_acor); 00432 (void) free(data->learning->nomvar_precip_reg_vif); 00433 if (data->learning->nomvar_precip_reg_err != NULL) 00434 (void) free(data->learning->nomvar_precip_reg_err); 00435 (void) free(data->learning->nomvar_precip_index); 00436 (void) free(data->learning->nomvar_precip_index_obs); 00437 (void) free(data->learning->nomvar_sup_index); 00438 (void) free(data->learning->nomvar_sup_val); 00439 (void) free(data->learning->nomvar_sup_index_mean); 00440 (void) free(data->learning->nomvar_sup_index_var); 00441 (void) free(data->learning->nomvar_pc_normalized_var); 00442 00443 (void) free(data->learning->sup_latname); 00444 (void) free(data->learning->sup_lonname); 00445 00446 if (data->learning->learning_save == TRUE && data->conf->output_only != TRUE) { 00447 (void) free(data->learning->filename_save_weight); 00448 (void) free(data->learning->filename_save_learn); 00449 (void) free(data->learning->filename_save_clust_learn); 00450 } 00451 00452 if (data->info->title != NULL) { 00453 (void) free(data->info->title); 00454 (void) free(data->info->title_french); 00455 (void) free(data->info->summary); 00456 (void) free(data->info->summary_french); 00457 (void) free(data->info->keywords); 00458 (void) free(data->info->processor); 00459 (void) free(data->info->software); 00460 (void) free(data->info->description); 00461 (void) free(data->info->institution); 00462 (void) free(data->info->creator_email); 00463 (void) free(data->info->creator_url); 00464 (void) free(data->info->creator_name); 00465 (void) free(data->info->version); 00466 (void) free(data->info->scenario); 00467 (void) free(data->info->scenario_co2); 00468 (void) free(data->info->model); 00469 (void) free(data->info->institution_model); 00470 (void) free(data->info->country); 00471 (void) free(data->info->member); 00472 (void) free(data->info->downscaling_forcing); 00473 (void) free(data->info->timestep); 00474 (void) free(data->info->contact_email); 00475 (void) free(data->info->contact_name); 00476 (void) free(data->info->other_contact_email); 00477 (void) free(data->info->other_contact_name); 00478 } 00479 00480 (void) free(data->reg->filename); 00481 (void) free(data->reg->dimxname); 00482 (void) free(data->reg->dimyname); 00483 (void) free(data->reg->lonname); 00484 (void) free(data->reg->latname); 00485 (void) free(data->reg->ptsname); 00486 if (data->reg->reg_save == TRUE) { 00487 (void) free(data->reg->filename_save_ctrl_reg); 00488 (void) free(data->reg->filename_save_other_reg); 00489 (void) free(data->reg->timename); 00490 } 00491 if (data->conf->output_only != TRUE) { 00492 (void) free(data->reg->lat); 00493 (void) free(data->reg->lon); 00494 } 00495 00496 if (data->secondary_mask->use_mask == TRUE) { 00497 if (data->conf->output_only != TRUE) 00498 (void) free(data->secondary_mask->field); 00499 (void) free(data->secondary_mask->filename); 00500 (void) free(data->secondary_mask->maskname); 00501 (void) free(data->secondary_mask->lonname); 00502 (void) free(data->secondary_mask->latname); 00503 (void) free(data->secondary_mask->coords); 00504 (void) free(data->secondary_mask->dimxname); 00505 (void) free(data->secondary_mask->dimyname); 00506 (void) free(data->secondary_mask->dimcoords); 00507 (void) free(data->secondary_mask->proj); 00508 (void) free(data->secondary_mask->lat); 00509 (void) free(data->secondary_mask->lon); 00510 } 00511 (void) free(data->secondary_mask); 00512 00513 if (data->conf->learning_maskfile->use_mask == TRUE) { 00514 if (data->conf->output_only != TRUE) 00515 (void) free(data->conf->learning_maskfile->field); 00516 (void) free(data->conf->learning_maskfile->filename); 00517 (void) free(data->conf->learning_maskfile->maskname); 00518 (void) free(data->conf->learning_maskfile->lonname); 00519 (void) free(data->conf->learning_maskfile->latname); 00520 (void) free(data->conf->learning_maskfile->coords); 00521 (void) free(data->conf->learning_maskfile->dimxname); 00522 (void) free(data->conf->learning_maskfile->dimyname); 00523 (void) free(data->conf->learning_maskfile->dimcoords); 00524 (void) free(data->conf->learning_maskfile->proj); 00525 (void) free(data->conf->learning_maskfile->lat); 00526 (void) free(data->conf->learning_maskfile->lon); 00527 } 00528 (void) free(data->conf->learning_maskfile); 00529 00530 if (data->conf->obs_var->nobs_var > 0) { 00531 for (i=0; i<data->conf->obs_var->nobs_var; i++) { 00532 (void) free(data->conf->obs_var->acronym[i]); 00533 (void) free(data->conf->obs_var->netcdfname[i]); 00534 (void) free(data->conf->obs_var->name[i]); 00535 (void) free(data->conf->obs_var->post[i]); 00536 (void) free(data->conf->obs_var->clim[i]); 00537 (void) free(data->conf->obs_var->output[i]); 00538 (void) free(data->conf->obs_var->height[i]); 00539 (void) free(data->conf->obs_var->units[i]); 00540 } 00541 (void) free(data->conf->obs_var->acronym); 00542 (void) free(data->conf->obs_var->netcdfname); 00543 (void) free(data->conf->obs_var->name); 00544 (void) free(data->conf->obs_var->factor); 00545 (void) free(data->conf->obs_var->delta); 00546 (void) free(data->conf->obs_var->post); 00547 (void) free(data->conf->obs_var->clim); 00548 (void) free(data->conf->obs_var->output); 00549 (void) free(data->conf->obs_var->height); 00550 (void) free(data->conf->obs_var->units); 00551 } 00552 (void) free(data->conf->obs_var->frequency); 00553 (void) free(data->conf->obs_var->template); 00554 (void) free(data->conf->obs_var->latname); 00555 (void) free(data->conf->obs_var->lonname); 00556 (void) free(data->conf->obs_var->timename); 00557 (void) free(data->conf->obs_var->altitude); 00558 (void) free(data->conf->obs_var->altitudename); 00559 (void) free(data->conf->obs_var->proj->name); 00560 (void) free(data->conf->obs_var->proj->coords); 00561 (void) free(data->conf->obs_var->proj->grid_mapping_name); 00562 (void) free(data->conf->obs_var->dimxname); 00563 (void) free(data->conf->obs_var->dimyname); 00564 (void) free(data->conf->obs_var->dimcoords); 00565 (void) free(data->conf->obs_var->proj); 00566 (void) free(data->conf->obs_var->path); 00567 (void) free(data->conf->obs_var); 00568 00569 (void) free(data->conf->clim_filter_type); 00570 (void) free(data->conf->classif_type); 00571 (void) free(data->conf->time_units); 00572 (void) free(data->conf->cal_type); 00573 (void) free(data->conf->dimxname_eof); 00574 (void) free(data->conf->dimyname_eof); 00575 (void) free(data->conf->lonname_eof); 00576 (void) free(data->conf->latname_eof); 00577 (void) free(data->conf->eofname); 00578 (void) free(data->conf->ptsname); 00579 (void) free(data->conf->clustname); 00580 (void) free(data->conf->output_path); 00581 00582 if (data->conf->nperiods > 0) 00583 (void) free(data->conf->period); 00584 (void) free(data->conf->period_ctrl); 00585 (void) free(data->conf->season); 00586 00587 (void) free(data->learning->data); 00588 00589 (void) free(data->conf->config); 00590 00591 (void) free(data->conf); 00592 (void) free(data->info); 00593 (void) free(data->learning); 00594 (void) free(data->reg); 00595 (void) free(data->field); 00596 }