Changeset 24152


Ignore:
Timestamp:
09/16/19 02:57:07 (6 years ago)
Author:
Mathieu Morlighem
Message:

CHG: simplifying parameters

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Params/Parameters.cpp

    r23644 r24152  
    5555}
    5656/*}}}*/
     57int Parameters::EnumToIndex(int enum_in){/*{{{*/
     58
     59        /*Make sure this parameter is at the right place*/
     60        #ifdef _ISSM_DEBUG_
     61        if(enum_in<=ParametersSTARTEnum) _error_("Enum "<<EnumToStringx(enum_in)<<" should appear after ParametersSTARTEnum");
     62        if(enum_in>=ParametersENDEnum)   _error_("Enum "<<EnumToStringx(enum_in)<<" should appear before ParametersENDEnum");
     63        #endif
     64        return enum_in - ParametersSTARTEnum -1;
     65}/*}}}*/
    5766
    5867void Parameters::AddObject(Param* newparam){/*{{{*/
     
    6372
    6473        /*Get index in array*/
    65         #ifdef _ISSM_DEBUG_
    66         if(param_enum<=ParametersSTARTEnum) _error_("Cannot add param: Enum "<<EnumToStringx(param_enum)<<" should appear after ParametersSTARTEnum");
    67         if(param_enum>=ParametersENDEnum)   _error_("Cannot add param: Enum "<<EnumToStringx(param_enum)<<" should appear before ParametersENDEnum");
    68         #endif
    69         int index = param_enum - ParametersSTARTEnum -1;
     74        int index = EnumToIndex(param_enum);
    7075
    7176        /*Delete param if it already exists*/
     
    238243void Parameters::Delete(int param_enum){/*{{{*/
    239244
    240         _assert_(param_enum>ParametersSTARTEnum);
    241         _assert_(param_enum<ParametersENDEnum);
    242 
    243         int index = param_enum - ParametersSTARTEnum -1;
     245        int index = EnumToIndex(param_enum);
    244246        if(this->params[index]){
    245247                delete this->params[index];
     
    252254bool Parameters::Exist(int param_enum){/*{{{*/
    253255
    254         _assert_(param_enum>ParametersSTARTEnum);
    255         _assert_(param_enum<ParametersENDEnum);
    256 
    257         int index = param_enum - ParametersSTARTEnum -1;
     256        int index = EnumToIndex(param_enum);
    258257        if(this->params[index]) return true;
    259258
     
    263262void Parameters::FindParam(bool* pbool,int param_enum){ _assert_(this);/*{{{*/
    264263
    265         _assert_(param_enum>ParametersSTARTEnum);
    266         _assert_(param_enum<ParametersENDEnum);
    267 
    268         int index = param_enum - ParametersSTARTEnum -1;
     264        int index = EnumToIndex(param_enum);
    269265        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    270266        this->params[index]->GetParameterValue(pbool);
     
    273269void Parameters::FindParam(int* pinteger,int param_enum){ _assert_(this);/*{{{*/
    274270
    275         _assert_(param_enum>ParametersSTARTEnum);
    276         _assert_(param_enum<ParametersENDEnum);
    277 
    278         int index = param_enum - ParametersSTARTEnum -1;
     271        int index = EnumToIndex(param_enum);
    279272        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    280273        this->params[index]->GetParameterValue(pinteger);
     
    282275/*}}}*/
    283276void Parameters::FindParam(IssmDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
    284         _assert_(param_enum>ParametersSTARTEnum);
    285         _assert_(param_enum<ParametersENDEnum);
    286 
    287         int index = param_enum - ParametersSTARTEnum -1;
     277        int index = EnumToIndex(param_enum);
    288278        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    289279        this->params[index]->GetParameterValue(pscalar);
     
    292282void Parameters::FindParam(IssmDouble* pscalar, int param_enum,IssmDouble time){ _assert_(this);/*{{{*/
    293283
    294         _assert_(param_enum>ParametersSTARTEnum);
    295         _assert_(param_enum<ParametersENDEnum);
    296 
    297         int index = param_enum - ParametersSTARTEnum -1;
     284        int index = EnumToIndex(param_enum);
    298285        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    299286        this->params[index]->GetParameterValue(pscalar,time);
     
    302289void Parameters::FindParam(IssmDouble* pscalar,int row,IssmDouble time, int param_enum){ _assert_(this);/*{{{*/
    303290
    304         _assert_(param_enum>ParametersSTARTEnum);
    305         _assert_(param_enum<ParametersENDEnum);
    306 
    307         int index = param_enum - ParametersSTARTEnum -1;
     291        int index = EnumToIndex(param_enum);
    308292        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    309293        this->params[index]->GetParameterValue(pscalar,row,time);
     
    312296void Parameters::FindParam(char** pstring,int param_enum){ _assert_(this);/*{{{*/
    313297
    314         _assert_(param_enum>ParametersSTARTEnum);
    315         _assert_(param_enum<ParametersENDEnum);
    316 
    317         int index = param_enum - ParametersSTARTEnum -1;
     298        int index = EnumToIndex(param_enum);
    318299        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    319300        this->params[index]->GetParameterValue(pstring);
     
    323304void Parameters::FindParam(char*** pstringarray,int* pM,int param_enum){ _assert_(this);/*{{{*/
    324305
    325         _assert_(param_enum>ParametersSTARTEnum);
    326         _assert_(param_enum<ParametersENDEnum);
    327 
    328         int index = param_enum - ParametersSTARTEnum -1;
     306        int index = EnumToIndex(param_enum);
    329307        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    330308        this->params[index]->GetParameterValue(pstringarray,pM);
     
    333311void Parameters::FindParam(int** pintarray,int* pM, int param_enum){ _assert_(this);/*{{{*/
    334312
    335         _assert_(param_enum>ParametersSTARTEnum);
    336         _assert_(param_enum<ParametersENDEnum);
    337 
    338         int index = param_enum - ParametersSTARTEnum -1;
     313        int index = EnumToIndex(param_enum);
    339314        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    340315        this->params[index]->GetParameterValue(pintarray,pM);
     
    344319void Parameters::FindParam(int** pintarray,int* pM,int *pN,int param_enum){ _assert_(this);/*{{{*/
    345320
    346         _assert_(param_enum>ParametersSTARTEnum);
    347         _assert_(param_enum<ParametersENDEnum);
    348 
    349         int index = param_enum - ParametersSTARTEnum -1;
     321        int index = EnumToIndex(param_enum);
    350322        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    351323        this->params[index]->GetParameterValue(pintarray,pM,pN);
     
    355327void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int param_enum){ _assert_(this);/*{{{*/
    356328
    357         _assert_(param_enum>ParametersSTARTEnum);
    358         _assert_(param_enum<ParametersENDEnum);
    359 
    360         int index = param_enum - ParametersSTARTEnum -1;
     329        int index = EnumToIndex(param_enum);
    361330
    362331        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
     
    367336void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int* pN,int param_enum){ _assert_(this);/*{{{*/
    368337
    369         _assert_(param_enum>ParametersSTARTEnum);
    370         _assert_(param_enum<ParametersENDEnum);
    371 
    372         int index = param_enum - ParametersSTARTEnum -1;
     338        int index = EnumToIndex(param_enum);
    373339        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    374340        this->params[index]->GetParameterValue(pIssmDoublearray,pM,pN);
     
    377343void Parameters::FindParam(IssmDouble*** parray,int* pM,int** pmdims_array,int** pndims_array,int param_enum){ _assert_(this);/*{{{*/
    378344
    379         _assert_(param_enum>ParametersSTARTEnum);
    380         _assert_(param_enum<ParametersENDEnum);
    381 
    382         int index = param_enum - ParametersSTARTEnum -1;
     345        int index = EnumToIndex(param_enum);
    383346        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    384347        this->params[index]->GetParameterValue(parray,pM,pmdims_array,pndims_array);
     
    387350void Parameters::FindParam(Vector<IssmDouble>** pvec,int param_enum){ _assert_(this);/*{{{*/
    388351
    389         _assert_(param_enum>ParametersSTARTEnum);
    390         _assert_(param_enum<ParametersENDEnum);
    391 
    392         int index = param_enum - ParametersSTARTEnum -1;
     352        int index = EnumToIndex(param_enum);
    393353        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    394354        this->params[index]->GetParameterValue(pvec);
     
    397357void Parameters::FindParam(Matrix<IssmDouble>** pmat,int param_enum){ _assert_(this);/*{{{*/
    398358
    399         _assert_(param_enum>ParametersSTARTEnum);
    400         _assert_(param_enum<ParametersENDEnum);
    401 
    402         int index = param_enum - ParametersSTARTEnum -1;
     359        int index = EnumToIndex(param_enum);
    403360        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    404361        this->params[index]->GetParameterValue(pmat);
     
    407364void Parameters::FindParam(FILE** pfid,int param_enum){ _assert_(this);/*{{{*/
    408365
    409         _assert_(param_enum>ParametersSTARTEnum);
    410         _assert_(param_enum<ParametersENDEnum);
    411 
    412         int index = param_enum - ParametersSTARTEnum -1;
     366        int index = EnumToIndex(param_enum);
    413367        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    414368        this->params[index]->GetParameterValue(pfid);
     
    418372        _assert_(this);
    419373
    420         _assert_(param_enum>ParametersSTARTEnum);
    421         _assert_(param_enum<ParametersENDEnum);
    422 
    423         int index = param_enum - ParametersSTARTEnum -1;
     374        int index = EnumToIndex(param_enum);
    424375        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    425376        this->params[index]->GetParameterValue(pdataset);
     
    427378/*}}}*/
    428379void Parameters::FindParamAndMakePassive(IssmPDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
    429         _assert_(param_enum>ParametersSTARTEnum);
    430         _assert_(param_enum<ParametersENDEnum);
    431380
    432381        /*Get "active" parameter*/
    433382        IssmDouble intermediary;
    434         int index = param_enum - ParametersSTARTEnum -1;
     383        int index = EnumToIndex(param_enum);
    435384        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    436385        this->params[index]->GetParameterValue(&intermediary);
     
    442391void Parameters::FindParamAndMakePassive(IssmPDouble** pvec,int* pM, int param_enum){ _assert_(this);/*{{{*/
    443392
    444         _assert_(param_enum>ParametersSTARTEnum);
    445         _assert_(param_enum<ParametersENDEnum);
    446 
    447         int index = param_enum - ParametersSTARTEnum -1;
     393        int index = EnumToIndex(param_enum);
    448394
    449395        /*Output*/
     
    465411        _assert_(this);
    466412
    467         _assert_(dataset_type>ParametersSTARTEnum);
    468         _assert_(dataset_type<ParametersENDEnum);
    469 
    470         int index = dataset_type - ParametersSTARTEnum -1;
     413        int index = EnumToIndex(dataset_type);
    471414        if(!this->params[index]) _error_("Parameter " << EnumToStringx(dataset_type) <<" not set");
    472415        if(this->params[index]->ObjectEnum()!=DataSetParamEnum) _error_("Parameter " << EnumToStringx(dataset_type) <<" is not a DataSetParam!");
     
    486429/*}}}*/
    487430IssmDouble Parameters::FindParam(int param_enum){ _assert_(this);/*{{{*/
    488         #ifdef _ISSM_DEBUG_
    489         if(param_enum<ParametersSTARTEnum || param_enum>ParametersENDEnum){
    490                 _error_(EnumToStringx(param_enum) <<" is not with the parameter Enums");
    491         }
    492         #endif
    493         _assert_(param_enum>ParametersSTARTEnum);
    494         _assert_(param_enum<ParametersENDEnum);
    495 
    496         int index = param_enum - ParametersSTARTEnum -1;
     431
     432        int index = EnumToIndex(param_enum);
    497433        if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
    498434
     
    653589Param* Parameters::FindParamObject(int param_enum){/*{{{*/
    654590
    655         #ifdef _ISSM_DEBUG_
    656         if(param_enum<=ParametersSTARTEnum) _error_("Cannot find param: Enum "<<EnumToStringx(param_enum)<<" should appear after ParametersSTARTEnum");
    657         if(param_enum>=ParametersENDEnum)   _error_("Cannot find param: Enum "<<EnumToStringx(param_enum)<<" should appear before ParametersENDEnum");
    658         #endif
    659 
    660         int index = param_enum - ParametersSTARTEnum -1;
    661         return this->params[index];
     591        return this->params[EnumToIndex(param_enum)];
    662592}
    663593/*}}}*/
  • issm/trunk-jpl/src/c/classes/Params/Parameters.h

    r23644 r24152  
    2020        private:
    2121                Param* params[NUMPARAMS];
     22                int    EnumToIndex(int enum_in);
    2223
    2324        public:
Note: See TracChangeset for help on using the changeset viewer.