Changeset 18873


Ignore:
Timestamp:
11/28/14 09:43:51 (10 years ago)
Author:
Eric.Larour
Message:

CHG: output definitions now carry an enum to facilitate the response computation (see FemModel new Responsex
routine one commit ago).

Location:
issm/trunk-jpl/src/c
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Definition.h

    r16388 r18873  
    1313                virtual       ~Definition(){};
    1414                virtual char*  Name()=0;
     15                virtual int    DefinitionEnum()=0;
    1516                virtual IssmDouble  Response(FemModel*)=0;
    1617
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp

    r18812 r18873  
    3030                                int          numgates;
    3131                                char       **gatenames               = NULL;
     32                                int        *gatedefinitionenums      = NULL;
    3233                                IssmDouble **gatesegments            = NULL;
    3334                                int         *gatesegments_M          = NULL;
     
    3637                                /*Fetch segments and names: */
    3738                                iomodel->FetchMultipleData(&gatenames,&numgates,MassfluxatgateNameEnum);
     39                                iomodel->FetchMultipleData(&gatedefinitionenums,&numgates,MassfluxatgateDefinitionenumEnum);
    3840                                iomodel->FetchMultipleData(&gatesegments,&gatesegments_M,NULL,&numgates,MassfluxatgateSegmentsEnum);
    3941
    4042                                for(j=0;j<numgates;j++){
    41                                         output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],gatesegments_M[j],gatesegments[j]));
     43                                        output_definitions->AddObject(new Massfluxatgate<IssmDouble>(gatenames[j],gatedefinitionenums[j],gatesegments_M[j],gatesegments[j]));
    4244                                }
    4345                                /*Free ressources:*/
     
    4951                                xDelete<IssmDouble*>(gatesegments);
    5052                                xDelete<int>(gatesegments_M);
     53                                xDelete<int>(gatedefinitionenums);
    5154                                /*}}}*/
    5255                        }
     
    5760                                int          nummisfits;
    5861                                char**       misfit_name_s             = NULL;   
     62                                int*         misfit_definitionenums_s             = NULL;   
    5963                                int*         misfit_model_enum_s        = NULL;
    6064                                IssmDouble** misfit_observation_s      = NULL;
     
    7074                                /*Fetch name, model_enum, observation, observation_enum, etc ... (see src/m/classes/misfit.m): */
    7175                                iomodel->FetchMultipleData(&misfit_name_s,&nummisfits,MisfitNameEnum);
     76                                iomodel->FetchMultipleData(&misfit_definitionenums_s,&nummisfits,MisfitDefinitionenumEnum);
    7277                                iomodel->FetchMultipleData(&misfit_model_enum_s,&nummisfits,MisfitModelEnumEnum);
    7378                                iomodel->FetchMultipleData(&misfit_observation_s,&misfit_observation_M_s,&misfit_observation_N_s,&nummisfits,MisfitObservationEnum);
     
    8085
    8186                                        /*First create a misfit object for that specific enum (misfit_model_enum_s[j]):*/
    82                                         output_definitions->AddObject(new Misfit(misfit_name_s[j],misfit_model_enum_s[j],misfit_observation_enum_s[j],misfit_timeinterpolation_s[j],misfit_weights_enum_s[j]));
     87                                        output_definitions->AddObject(new Misfit(misfit_name_s[j],misfit_definitionenums_s[j],misfit_model_enum_s[j],misfit_observation_enum_s[j],misfit_timeinterpolation_s[j],misfit_weights_enum_s[j]));
    8388
    8489                                        /*Now, for this particular misfit object, make sure we plug into the elements: the observation, and the weights.*/
     
    120125                                int          nummasscons;
    121126                                char**       masscon_name_s             = NULL;   
     127                                int*         masscon_definitionenum_s   = NULL;   
    122128                                IssmDouble** masscon_levelset_s           = NULL;
    123129                                int*         masscon_levelset_M_s    = NULL;
     
    126132                                /*Fetch name and levelset, etc ... (see src/m/classes/masscon.m): */
    127133                                iomodel->FetchMultipleData(&masscon_name_s,&nummasscons,MassconNameEnum);
     134                                iomodel->FetchMultipleData(&masscon_definitionenum_s,&nummasscons,MassconDefinitionenumEnum);
    128135                                iomodel->FetchMultipleData(&masscon_levelset_s,&masscon_levelset_M_s,&masscon_levelset_N_s,&nummasscons,MassconLevelsetEnum);
    129136                                for(j=0;j<nummasscons;j++){
    130137
    131138                                        /*Create a masscon object: */
    132                                         output_definitions->AddObject(new Masscon(masscon_name_s[j],masscon_levelset_s[j],masscon_levelset_M_s[j]));
     139                                        output_definitions->AddObject(new Masscon(masscon_name_s[j],masscon_definitionenum_s[j],masscon_levelset_s[j],masscon_levelset_M_s[j]));
    133140
    134141                                }
     
    146153                                xDelete<int>(masscon_levelset_M_s);
    147154                                xDelete<int>(masscon_levelset_N_s);
     155                                xDelete<int>(masscon_definitionenum_s);
    148156                                /*}}}*/
    149157                        }
     
    153161                                /*masscon variables: */
    154162                                char**       masscon_name_s             = NULL;   
     163                                int*         masscon_definitionenum_s             = NULL;   
    155164                                char**       masscon_namex_s             = NULL;   
    156165                                char**       masscon_namey_s             = NULL;   
     
    161170                                /*Fetch names and multiplicators, etc ... (see src/m/classes/masscon_axpby.m): */
    162171                                iomodel->FetchMultipleData(&masscon_name_s,&num,MassconaxpbyNameEnum);
     172                                iomodel->FetchMultipleData(&masscon_definitionenum_s,&num,MassconaxpbyDefinitionenumEnum);
    163173                                iomodel->FetchMultipleData(&masscon_namex_s,&num,MassconaxpbyNamexEnum);
    164174                                iomodel->FetchMultipleData(&masscon_namey_s,&num,MassconaxpbyNameyEnum);
     
    168178
    169179                                        /*Create a masscon axpyb object: */
    170                                         output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
     180                                        output_definitions->AddObject(new Massconaxpby(masscon_name_s[j],masscon_definitionenum_s[j],masscon_namex_s[j],masscon_namey_s[j],masscon_alpha_s[j],masscon_beta_s[j]));
    171181
    172182                                }
     
    182192                                xDelete<char*>(masscon_namex_s);
    183193                                xDelete<char*>(masscon_namey_s);
     194                                xDelete<int>(masscon_definitionenum_s);
    184195                                xDelete<IssmDouble>(masscon_alpha_s);
    185196                                xDelete<IssmDouble>(masscon_beta_s);
Note: See TracChangeset for help on using the changeset viewer.