Ignore:
Timestamp:
11/12/21 06:25:41 (3 years ago)
Author:
vverjans
Message:

CHG: making stochasticforcing.m more generic, extending stochasticforcing capability to DefaultCalving (second attempt)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r26608 r26615  
    500500
    501501        bool isstochasticforcing;
    502         parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum);
    503         if(isstochasticforcing){
    504                 int num_fields;
    505                 char** fields;
    506                 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.num_fields",StochasticForcingNumFieldsEnum));
    507                 iomodel->FindConstant(&fields,&num_fields,"md.stochasticforcing.fields");
    508                 if(num_fields<1) _error_("no stochasticforcing fields found");
    509                 int* stochasticforcing_enums = xNew<int>(num_fields);
    510                 for(int i=0;i<num_fields;i++){
    511                         stochasticforcing_enums[i] = StringToEnumx(fields[i]);
    512                         xDelete<char>(fields[i]);
    513                 }
    514                 xDelete<char*>(fields);
    515                 parameters->AddObject(new IntVecParam(StochasticForcingFieldsEnum,stochasticforcing_enums,num_fields));
    516                 xDelete<int>(stochasticforcing_enums);
    517 
     502   parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum);
     503   if(isstochasticforcing){
     504      int num_fields,stochastic_dim;
     505      char** fields;
     506      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.num_fields",StochasticForcingNumFieldsEnum));
     507      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.defaultdimension",StochasticForcingDefaultDimensionEnum));
     508      iomodel->FindConstant(&fields,&num_fields,"md.stochasticforcing.fields");
     509      if(num_fields<1) _error_("no stochasticforcing fields found");
     510      int* stochasticforcing_enums = xNew<int>(num_fields);
     511      for(int i=0;i<num_fields;i++){
     512         stochasticforcing_enums[i] = StringToEnumx(fields[i]);
     513         xDelete<char>(fields[i]);
     514      }
     515      xDelete<char*>(fields);
     516      parameters->AddObject(new IntVecParam(StochasticForcingFieldsEnum,stochasticforcing_enums,num_fields));
     517      xDelete<int>(stochasticforcing_enums);
    518518      parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.randomflag",StochasticForcingRandomflagEnum));
    519                 iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.dimensions");
    520                 parameters->AddObject(new IntVecParam(StochasticForcingDimensionsEnum,transparam,N));
    521                 xDelete<IssmDouble>(transparam);
    522                 iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.covariance");
    523                 parameters->AddObject(new DoubleMatParam(StochasticForcingCovarianceEnum,transparam,M,N));
    524                 xDelete<IssmDouble>(transparam);
    525         }
     519      iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.dimensions");
     520      parameters->AddObject(new IntVecParam(StochasticForcingDimensionsEnum,transparam,N));
     521      xDelete<IssmDouble>(transparam);
     522      iomodel->FetchData(&transparam,&M,&N,"md.stochasticforcing.covariance");
     523      parameters->AddObject(new DoubleMatParam(StochasticForcingCovarianceEnum,transparam,M,N));
     524      xDelete<IssmDouble>(transparam);
     525   }
    526526
    527527        /*Deal with mass flux segments: {{{*/
Note: See TracChangeset for help on using the changeset viewer.