free_main_data.c File Reference

Free main data structure. More...

#include <dsclim.h>
Include dependency graph for free_main_data.c:

Go to the source code of this file.

Functions

void free_main_data (data_struct *data)
 Free main data structure.

Detailed Description

Free main data structure.

Definition in file free_main_data.c.


Function Documentation

void free_main_data ( data_struct data  ) 

Free main data structure.

Parameters:
[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 }


Generated on 12 May 2016 for DSCLIM by  doxygen 1.6.1