Changeset 22643


Ignore:
Timestamp:
03/28/18 09:39:35 (7 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixed valgrind error when param is not a transient param

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

Legend:

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

    r22628 r22643  
    4444                void  GetParameterValue(int** pintarray,int* pM);
    4545                void  GetParameterValue(int** pintarray,int* pM,int* pN);
    46                 void  GetParameterValue(IssmDouble* pIssmDouble){*pIssmDouble=value;}
    47                 void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a IssmDouble for a given time");}
     46                void  GetParameterValue(IssmDouble* pIssmDouble){*pIssmDouble=value;};
     47                void  GetParameterValue(IssmDouble* pdouble,IssmDouble time){*pdouble=value;};
    4848                void  GetParameterValue(char** pstring){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string");}
    4949                void  GetParameterValue(char*** pstringarray,int* pM){_error_("Param "<< EnumToStringx(enum_type) << " cannot return a string array");}
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r22628 r22643  
    178178                        iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
    179179                        iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_melting_rate");
    180                         parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M)); _assert_(N==2 || N==1);
     180                        if(N==1){
     181                                _assert_(M==1);
     182                                parameters->AddObject(new DoubleParam(BasalforcingsDeepwaterMeltingRateEnum,transparam[0]));
     183                        }
     184                        else{
     185                                _assert_(N==2);
     186                                parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
     187                        }
     188                        xDelete<IssmDouble>(transparam);
    181189                        iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_elevation");
    182                         parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,M)); _assert_(N==2 || N==1);
     190                        if(N==1){
     191                                _assert_(M==1);
     192                                parameters->AddObject(new DoubleParam(BasalforcingsDeepwaterElevationEnum,transparam[0]));
     193                        }
     194                        else{
     195                                _assert_(N==2);
     196                                parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
     197                        }
     198                        xDelete<IssmDouble>(transparam);
    183199                        iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.upperwater_elevation");
    184                         parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,M)); _assert_(N==2 || N==1);
     200                        if(N==1){
     201                                _assert_(M==1);
     202                                parameters->AddObject(new DoubleParam(BasalforcingsUpperwaterElevationEnum,transparam[0]));
     203                        }
     204                        else{
     205                                _assert_(N==2);
     206                                parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
     207                        }
     208                        xDelete<IssmDouble>(transparam);
    185209                        break;
    186210                case MismipFloatingMeltRateEnum:
     
    210234                                parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.gamma_T",BasalforcingsPicoGammaTEnum));
    211235                                iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_temperature");
     236                                _assert_(M==2 && N>1);
    212237                                parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,M,N));
    213238                                xDelete<IssmDouble>(transparam);
    214239                                iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_salinity");
     240                                _assert_(M==2 && N>1);
    215241                                parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,M,N));
    216242                                xDelete<IssmDouble>(transparam);
Note: See TracChangeset for help on using the changeset viewer.