Ignore:
Timestamp:
10/22/21 05:36:58 (3 years ago)
Author:
vverjans
Message:

CHG: added class frontalforcingsrignotautoregression (autoregressive calculation of thermal_forcing), autoregression routine in Element.cpp is now generic, corrected nightly runs 257 and 542, added nightly run 543

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

    r26487 r26495  
    9393                        break;
    9494                case FrontalForcingsRignotEnum:
    95                         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.basin_id",FrontalForcingsBasinIdEnum);
    96                         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.subglacial_discharge",FrontalForcingsSubglacialDischargeEnum);
    97                         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.thermalforcing",FrontalForcingsThermalForcingEnum);
    98                         break;
     95         /*Retrieve thermal forcing only in the case of non-autoregressive FrontalForcingsRignot*/
     96         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.thermalforcing",FrontalForcingsThermalForcingEnum);
     97         /* Do not break here, still retrieve basin_ID,subglacial_discharge, etc.*/
     98      case FrontalForcingsRignotAutoregressionEnum:
     99         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.basin_id",FrontalForcingsBasinIdEnum);
     100         iomodel->FetchDataToInput(inputs,elements,"md.frontalforcings.subglacial_discharge",FrontalForcingsSubglacialDischargeEnum);
     101         break;
    99102                default:
    100103                        _error_("Frontal forcings"<<EnumToStringx(melt_parameterization)<<" not supported yet");
     
    137140        int melt_parameterization;
    138141        iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
     142        int M,N;
     143        IssmDouble* transparam = NULL;
    139144        switch(melt_parameterization){
    140145                case FrontalForcingsDefaultEnum:
    141146                        break;
     147                case FrontalForcingsRignotAutoregressionEnum:
     148                        /*Retrieve autoregressive parameters*/
     149                        parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.randomflag",FrontalForcingsRandomflagEnum));
     150         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.ar_order",FrontalForcingsAutoregressiveOrderEnum));
     151         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.ar_initialtime",FrontalForcingsAutoregressionInitialTimeEnum));
     152         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.ar_timestep",FrontalForcingsAutoregressionTimestepEnum));
     153                        iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.beta0");
     154         parameters->AddObject(new DoubleVecParam(FrontalForcingsBeta0Enum,transparam,N));
     155         xDelete<IssmDouble>(transparam);
     156         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.beta1");
     157         parameters->AddObject(new DoubleVecParam(FrontalForcingsBeta1Enum,transparam,N));
     158         xDelete<IssmDouble>(transparam);
     159         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.phi");
     160         parameters->AddObject(new DoubleMatParam(FrontalForcingsPhiEnum,transparam,M,N));
     161         xDelete<IssmDouble>(transparam);
     162         iomodel->FetchData(&transparam,&M,&N,"md.frontalforcings.covmat");
     163         parameters->AddObject(new DoubleMatParam(FrontalForcingsCovmatEnum,transparam,M,N));
     164         xDelete<IssmDouble>(transparam);
     165                        /*Do not break here, generic FrontalForcingsRignot parameters still to be retrieved*/
    142166                case FrontalForcingsRignotEnum:
    143167                        parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.num_basins",FrontalForcingsNumberofBasinsEnum));
Note: See TracChangeset for help on using the changeset viewer.