Changeset 27288


Ignore:
Timestamp:
09/20/22 12:23:23 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: simplifying how variables are extrapolated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/cores/movingfront_core.cpp

    r27254 r27288  
    1717        /* intermediaries */
    1818        bool save_results,isstressbalance,ismasstransport,isthermal,isenthalpy,islevelset,ismovingfront,killicebergs;
    19         int  domaintype, num_extrapol_vars, index,reinit_frequency,step;
    20         int* extrapol_vars=NULL;
     19        int  domaintype, reinit_frequency,step;
    2120        Analysis  *analysis=NULL;
    2221        IssmDouble maxVel;
     
    6564
    6665        /* determine variables for extrapolation */
    67         num_extrapol_vars=0;
     66        std::vector<int>  extrapol_vars;
    6867        if(isstressbalance){
    69                 if(domaintype==Domain3DEnum)
    70                  num_extrapol_vars+=3;
    71                 else
    72                  num_extrapol_vars+=2;
     68                extrapol_vars.push_back(VxEnum);
     69                extrapol_vars.push_back(VyEnum);
     70                if(domaintype==Domain3DEnum) extrapol_vars.push_back(VzEnum);
    7371        }
    74         if(ismasstransport) num_extrapol_vars+=1;
    75         if(isthermal && domaintype==Domain3DEnum) num_extrapol_vars+=1;
    76         extrapol_vars=xNew<int>(num_extrapol_vars);
    77         index=0;
    78         if(isstressbalance){
    79                 extrapol_vars[index]=VxEnum; index++;
    80                 extrapol_vars[index]=VyEnum; index++;
    81                 if(domaintype==Domain3DEnum){
    82                         extrapol_vars[index]=VzEnum; index++;
    83                 }
    84         }
    85         if(ismasstransport){
    86                 extrapol_vars[index]=ThicknessEnum; index++;
    87         }
     72        if(ismasstransport) extrapol_vars.push_back(ThicknessEnum);
    8873        if(isthermal && domaintype==Domain3DEnum){
    89                 if(isenthalpy){
    90                         extrapol_vars[index]=EnthalpyEnum;
    91                 }
    92                 else{
    93                         extrapol_vars[index]=TemperatureEnum;
    94                 }
    95                 index++;
     74                if(isenthalpy) extrapol_vars.push_back(EnthalpyEnum);
     75                else           extrapol_vars.push_back(TemperatureEnum);
    9676        }
    9777
    9878        /* extrapolate */
    9979        analysis = new ExtrapolationAnalysis();
    100         for(int iv=0;iv<num_extrapol_vars;iv++){
     80        for(int iv=0;iv<extrapol_vars.size();iv++){
    10181                femmodel->parameters->SetParam(extrapol_vars[iv],ExtrapolationVariableEnum);
    10282                analysis->Core(femmodel);
    10383        }
    104         xDelete<int>(extrapol_vars);
    10584        delete analysis;       
    10685
Note: See TracChangeset for help on using the changeset viewer.