Changeset 23540


Ignore:
Timestamp:
12/12/18 12:51:02 (6 years ago)
Author:
rueckamp
Message:

NEW: Added SEMIC capability

Location:
issm/trunk-jpl
Files:
2 added
13 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/externalpackages/semic/install.sh

    r23525 r23540  
    33
    44#Some cleanup
    5 #rm -rf install src
    6 #mkdir install
     5rm -rf install src
     6mkdir install
    77
    88#Download latest version
    9 #git clone https://github.com/mkrapp/semic.git src
     9git clone https://github.com/mkrapp/semic.git src
    1010
    1111if which ifort >/dev/null; then
  • TabularUnified issm/trunk-jpl/m4/issm_options.m4

    r23491 r23540  
    16971697                AC_SUBST([SEMICLIB])
    16981698        fi
     1699        AM_CONDITIONAL([SEMIC],[test x$HAVE_SEMIC = xyes])
    16991700        dnl }}}
    17001701dnl spai{{{
  • TabularUnified issm/trunk-jpl/src/c/Makefile.am

    r23482 r23540  
    539539endif
    540540#}}}
    541 
     541#SEMIC sources  {{{
     542if SEMIC
     543if FORTRAN
     544issm_sources += ./modules/SurfaceMassBalancex/run_semic.f90
     545endif
     546endif
     547#}}}
    542548#Wrapper sources
    543549#Kml sources  {{{
     
    645651if !WINDOWS
    646652if !STANDALONE_LIBRARIES
    647 libISSMCore_la_LIBADD = $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB)$(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
     653libISSMCore_la_LIBADD = $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
    648654if FORTRAN
    649655libISSMCore_la_LIBADD += $(FLIBS) $(FORTRANLIB)
  • TabularUnified issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp

    r23468 r23540  
    158158                        iomodel->FetchDataToInput(elements,"md.smb.runoffgrad",SmbRunoffgradEnum);
    159159                        break;
     160                case SMBsemicEnum:
     161                        iomodel->FetchDataToInput(elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
     162                        iomodel->FetchDataToInput(elements,"md.smb.s0gcm",SmbS0gcmEnum);
     163                        iomodel->FetchDataToInput(elements,"md.smb.dailysnowfall",SmbDailysnowfallEnum);
     164                        iomodel->FetchDataToInput(elements,"md.smb.dailyrainfall",SmbDailyrainfallEnum);
     165                        iomodel->FetchDataToInput(elements,"md.smb.dailydsradiation",SmbDailydsradiationEnum);
     166                        iomodel->FetchDataToInput(elements,"md.smb.dailydlradiation",SmbDailydlradiationEnum);
     167                        iomodel->FetchDataToInput(elements,"md.smb.dailywindspeed",SmbDailywindspeedEnum);
     168                        iomodel->FetchDataToInput(elements,"md.smb.dailypressure",SmbDailypressureEnum);
     169                        iomodel->FetchDataToInput(elements,"md.smb.dailyairdensity",SmbDailyairdensityEnum);
     170                        iomodel->FetchDataToInput(elements,"md.smb.dailyairhumidity",SmbDailyairhumidityEnum);
     171                        iomodel->FetchDataToInput(elements,"md.smb.dailytemperature",SmbDailytemperatureEnum);
     172                        break;
    160173                default:
    161174                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
     
    283296                          iomodel->DeleteData(temp,"md.smb.runoffref");
    284297                        break;
     298                case SMBsemicEnum:
     299                        /*Nothing to add to parameters*/
     300                        break;
    285301                default:
    286302                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
     
    366382                        SmbGradientsComponentsx(femmodel);
    367383                        break;
     384                case SMBsemicEnum:
     385                        #ifdef _HAVE_SEMIC_
     386                        if(VerboseSolution())_printf0_("  call smb SEMIC module\n");
     387                        SmbSemicx(femmodel);
     388                        #else
     389                        _error_("SEMIC not installed");
     390                        #endif //_HAVE_SEMIC_
     391                        break;
    368392                default:
    369393                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r23468 r23540  
    1717/*}}}*/
    1818
     19#ifdef _HAVE_SEMIC_
     20/* SEMIC prototype {{{*/
     21extern "C" void run_semic_(double *sf_in, double *rf_in, double *swd_in, double *lwd_in, double *wind_in, double *sp_in, double *rhoa_in,
     22                                double *qq_in, double *tt_in, double *tsurf_out, double *smb_out, double *saccu_out, double *smelt_out);
     23#endif
     24// _HAVE_SEMIC_
     25/*}}}*/
    1926/*Constructors/destructor/copy*/
    2027Element::Element(){/*{{{*/
     
    30093016}
    30103017/*}}}*/
     3018#ifdef _HAVE_SEMIC_
     3019void       Element::SmbSemic(){/*{{{*/
     3020
     3021        /*only compute SMB at the surface: */
     3022        if (!IsOnSurface()) return;
     3023
     3024        int  numvertices = this->GetNumberOfVertices();
     3025
     3026        IssmDouble* s=xNew<IssmDouble>(numvertices);
     3027        IssmDouble* s0gcm=xNew<IssmDouble>(numvertices);
     3028        IssmDouble* st=xNew<IssmDouble>(numvertices);
     3029
     3030        // daily forcing inputs
     3031        IssmDouble* dailyrainfall=xNew<IssmDouble>(365*numvertices);
     3032        IssmDouble* dailysnowfall=xNew<IssmDouble>(365*numvertices);
     3033        IssmDouble* dailydlradiation=xNew<IssmDouble>(365*numvertices);
     3034        IssmDouble* dailydsradiation=xNew<IssmDouble>(365*numvertices);
     3035        IssmDouble* dailywindspeed=xNew<IssmDouble>(365*numvertices);
     3036        IssmDouble* dailypressure=xNew<IssmDouble>(365*numvertices);
     3037        IssmDouble* dailyairdensity=xNew<IssmDouble>(365*numvertices);
     3038        IssmDouble* dailyairhumidity=xNew<IssmDouble>(365*numvertices);
     3039        IssmDouble* dailytemperature=xNew<IssmDouble>(365*numvertices);
     3040        // daily outputs
     3041        IssmDouble* tsurf_out=xNew<IssmDouble>(numvertices); memset(tsurf_out, 0., numvertices*sizeof(IssmDouble));
     3042        IssmDouble* smb_out=xNew<IssmDouble>(numvertices); memset(smb_out, 0., numvertices*sizeof(IssmDouble));
     3043        IssmDouble* saccu_out=xNew<IssmDouble>(numvertices); memset(saccu_out, 0., numvertices*sizeof(IssmDouble));
     3044        IssmDouble* smelt_out=xNew<IssmDouble>(numvertices); memset(smelt_out, 0., numvertices*sizeof(IssmDouble));
     3045
     3046        IssmDouble rho_water,rho_ice,desfac,rlaps,rdl;
     3047        IssmDouble time,yts,time_yr;
     3048
     3049        /* Get time: */
     3050        this->parameters->FindParam(&time,TimeEnum);
     3051        this->parameters->FindParam(&yts,ConstantsYtsEnum);
     3052        time_yr=floor(time/yts)*yts;
     3053
     3054        /*Get material parameters :*/
     3055        rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
     3056        rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
     3057        desfac=this->matpar->GetMaterialParameter(SmbDesfacEnum);
     3058        rlaps=this->matpar->GetMaterialParameter(SmbRlapsEnum);
     3059        rdl=this->matpar->GetMaterialParameter(SmbRdlEnum);
     3060
     3061        /* Retrieve inputs: */
     3062        Input* dailysnowfall_input=this->GetInput(SmbDailysnowfallEnum); _assert_(dailysnowfall_input);
     3063        Input* dailyrainfall_input=this->GetInput(SmbDailyrainfallEnum); _assert_(dailyrainfall_input);
     3064        Input* dailydlradiation_input=this->GetInput(SmbDailydlradiationEnum); _assert_(dailydlradiation_input);
     3065        Input* dailydsradiation_input=this->GetInput(SmbDailydsradiationEnum); _assert_(dailydsradiation_input);
     3066        Input* dailywindspeed_input=this->GetInput(SmbDailywindspeedEnum); _assert_(dailywindspeed_input);
     3067        Input* dailypressure_input=this->GetInput(SmbDailypressureEnum); _assert_(dailypressure_input);
     3068        Input* dailyairdensity_input=this->GetInput(SmbDailyairdensityEnum); _assert_(dailyairdensity_input);
     3069        Input* dailyairhumidity_input=this->GetInput(SmbDailyairhumidityEnum); _assert_(dailyairhumidity_input);
     3070        Input* dailytemperature_input=this->GetInput(SmbDailytemperatureEnum); _assert_(dailytemperature_input);
     3071
     3072        /* Recover info at the vertices: */
     3073        GetInputListOnVertices(&s[0],SurfaceEnum);
     3074        GetInputListOnVertices(&s0gcm[0],SmbS0gcmEnum);
     3075
     3076        /* loop over vertices and days */ //FIXME account for leap years (365 -> 366)
     3077        Gauss* gauss=this->NewGauss();
     3078        for (int iday = 0; iday < 365; iday++){
     3079                for(int iv=0;iv<numvertices;iv++) {
     3080                        gauss->GaussVertex(iv);
     3081                        /* get forcing */
     3082                        dailyrainfall_input->GetInputValue(&dailyrainfall[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3083                        dailysnowfall_input->GetInputValue(&dailysnowfall[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3084                        dailydlradiation_input->GetInputValue(&dailydlradiation[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3085                        dailydsradiation_input->GetInputValue(&dailydsradiation[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3086                        dailywindspeed_input->GetInputValue(&dailywindspeed[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3087                        dailypressure_input->GetInputValue(&dailypressure[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3088                        dailyairdensity_input->GetInputValue(&dailyairdensity[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3089                        dailyairhumidity_input->GetInputValue(&dailyairhumidity[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3090                        dailytemperature_input->GetInputValue(&dailytemperature[iv*365+iday],gauss,time_yr+(iday+1)/365.*yts);
     3091
     3092                        /* Surface temperature correction */
     3093                        st[iv]=(s[iv]-s0gcm[iv])/1000.;
     3094                        dailytemperature[iv*365+iday]=dailytemperature[iv*365+iday]-rlaps *st[iv];
     3095
     3096                        /* Precipitation correction (Vizcaino et al. 2010) */
     3097                        if (s0gcm[iv] < 2000.0) {
     3098                                dailysnowfall[iv*365+iday] = dailysnowfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-2000.0));
     3099                                dailyrainfall[iv*365+iday] = dailyrainfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-2000.0));
     3100                        }else{
     3101                                dailysnowfall[iv*365+iday] = dailysnowfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-s0gcm[iv]));
     3102                                dailyrainfall[iv*365+iday] = dailyrainfall[iv*365+iday]*exp(desfac*(max(s[iv],2000.0)-s0gcm[iv]));
     3103                        }
     3104
     3105                        /* downward longwave radiation correction (Marty et al. 2002) */
     3106                        st[iv]=(s[iv]-s0gcm[iv])/1000.;
     3107                        dailydlradiation[iv*365+iday]=dailydlradiation[iv*365+iday]+rdl*st[iv];
     3108                }
     3109        }
     3110
     3111        for (int iv = 0; iv<numvertices; iv++){
     3112                /* call semic */
     3113                run_semic_(&dailysnowfall[iv*365], &dailyrainfall[iv*365], &dailydsradiation[iv*365], &dailydlradiation[iv*365],
     3114                                        &dailywindspeed[iv*365], &dailypressure[iv*365], &dailyairdensity[iv*365], &dailyairhumidity[iv*365], &dailytemperature[iv*365],
     3115                                        &tsurf_out[iv], &smb_out[iv], &saccu_out[iv], &smelt_out[iv]);
     3116        }
     3117
     3118        switch(this->ObjectEnum()){
     3119                case TriaEnum: 
     3120                        this->inputs->AddInput(new TriaInput(TemperatureSEMICEnum,&tsurf_out[0],P1Enum)); // TODO add TemperatureSEMICEnum to EnumDefinitions
     3121                        this->inputs->AddInput(new TriaInput(SmbMassBalanceEnum,&smb_out[0],P1Enum));
     3122                        this->inputs->AddInput(new TriaInput(SmbAccumulationEnum,&saccu_out[0],P1Enum));
     3123                        this->inputs->AddInput(new TriaInput(SmbMeltEnum,&smelt_out[0],P1Enum));
     3124                        break;
     3125                case PentaEnum:
     3126                        // TODO
     3127                        break;
     3128                case TetraEnum:
     3129                        // TODO
     3130                        break;
     3131                default: _error_("Not implemented yet");
     3132        }
     3133
     3134        /*clean-up*/
     3135        delete gauss;
     3136        xDelete<IssmDouble>(dailysnowfall);
     3137        xDelete<IssmDouble>(dailyrainfall);
     3138        xDelete<IssmDouble>(dailydlradiation);
     3139        xDelete<IssmDouble>(dailydsradiation);
     3140        xDelete<IssmDouble>(dailywindspeed);
     3141        xDelete<IssmDouble>(dailypressure);
     3142        xDelete<IssmDouble>(dailyairdensity);
     3143        xDelete<IssmDouble>(dailyairhumidity); 
     3144        xDelete<IssmDouble>(dailypressure);
     3145        xDelete<IssmDouble>(dailytemperature);
     3146        xDelete<IssmDouble>(smb_out);
     3147        xDelete<IssmDouble>(smelt_out);
     3148        xDelete<IssmDouble>(saccu_out);
     3149        xDelete<IssmDouble>(tsurf_out);
     3150        xDelete<IssmDouble>(s);
     3151        xDelete<IssmDouble>(st);       
     3152        xDelete<IssmDouble>(s0gcm);
     3153}
     3154/*}}}*/
     3155#endif // _HAVE_SEMIC_
    30113156int        Element::Sid(){/*{{{*/
    30123157
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.h

    r23524 r23540  
    154154                void               ResultToVector(Vector<IssmDouble>* vector,int output_enum);
    155155                void               SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
     156                void               SmbSemic();
    156157                int                Sid();
    157158                void               SmbGemb();
  • TabularUnified issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp

    r23532 r23540  
    3737        rlaps                     = 0;
    3838        rlapslgm                  = 0;
     39        rdl                                                       = 0;
    3940        dpermil                   = 0;
    4041        rheology_law              = 0;
     
    133134                                case SMBgradientscomponentsEnum:
    134135                                        /*Nothing to add*/
     136                                        break;
     137                                case SMBsemicEnum:
     138                                        iomodel->FindConstant(&this->desfac,"md.smb.desfac");
     139                                        iomodel->FindConstant(&this->rlaps,"md.smb.rlaps");
     140                                        iomodel->FindConstant(&this->rdl,"md.smb.rdl");
    135141                                        break;
    136142                                default:
     
    520526                        this->rlapslgm=constant;
    521527                        break;
     528                case SmbRdlEnum:
     529                        this->rdl=constant;
     530                        break;                 
    522531                case  SmbDpermilEnum:
    523532                        this->dpermil=constant;
     
    639648                case SmbRlapsEnum:                           return this->rlaps;
    640649                case SmbRlapslgmEnum:                        return this->rlapslgm;
     650                case SmbRdlEnum:                                                                                return this->rdl;
    641651                case SmbDpermilEnum:                         return this->dpermil;
    642652                case MaterialsLithosphereShearModulusEnum:   return this->lithosphere_shear_modulus;
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp

    r23366 r23540  
    438438
    439439}/*}}}*/
     440#ifdef _HAVE_SEMIC_
     441void SmbSemicx(FemModel* femmodel){/*{{{*/
     442
     443        for(int i=0;i<femmodel->elements->Size();i++){
     444                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
     445                element->SmbSemic();
     446        }
     447
     448}/*}}}*/
     449#else
     450void SmbSemicx(FemModel* femmodel){_error_("SEMIC not installed");}
     451#endif //_HAVE_SEMIC_
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h

    r23468 r23540  
    2121void SmbMeltComponentsx(FemModel* femmodel);
    2222void SmbGradientsComponentsx(FemModel* femmodel);
     23/* SEMIC: */
     24void SmbSemicx(FemModel* femmodel);
    2325/*GEMB: */
    2426void       Gembx(FemModel* femmodel);
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23524 r23540  
    560560        SmbBPosEnum,
    561561        SmbCEnum,
     562        SmbDailysnowfallEnum,
     563        SmbDailyrainfallEnum,
     564        SmbDailydsradiationEnum,
     565        SmbDailydlradiationEnum,
     566        SmbDailywindspeedEnum,
     567        SmbDailypressureEnum,
     568        SmbDailyairdensityEnum,
     569        SmbDailyairhumidityEnum,
     570        SmbDailytemperatureEnum,
    562571        SmbDEnum,
    563572        SmbDiniEnum,
     
    597606        SmbS0pEnum,
    598607        SmbS0tEnum,
     608        SmbS0gcmEnum,
    599609        SmbSizeiniEnum,
    600610        SmbSmbrefEnum,
     
    10931103        SigmaVMEnum,
    10941104        SmbAnalysisEnum,
     1105        SMBsemicEnum,
    10951106        SMBcomponentsEnum,
    10961107        SMBd18opddEnum,
     
    11101121        SMBpddSicopolisEnum,
    11111122        SMBgradientscomponentsEnum,
     1123        SmbRdlEnum,
    11121124        SmbRlapsEnum,
    11131125        SmbRlapslgmEnum,
     
    11411153        TaylorHoodEnum,
    11421154        TemperaturePDDEnum,
     1155        TemperatureSEMICEnum,
    11431156        TetraEnum,
    11441157        TetraInputEnum,
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23524 r23540  
    566566                case SmbBPosEnum : return "SmbBPos";
    567567                case SmbCEnum : return "SmbC";
     568                case SmbDailysnowfallEnum : return "SmbDailysnowfall";
     569                case SmbDailyrainfallEnum : return "SmbDailyrainfall";
     570                case SmbDailydsradiationEnum : return "SmbDailydsradiation";
     571                case SmbDailydlradiationEnum : return "SmbDailydlradiation";
     572                case SmbDailywindspeedEnum : return "SmbDailywindspeed";
     573                case SmbDailypressureEnum : return "SmbDailypressure";
     574                case SmbDailyairdensityEnum : return "SmbDailyairdensity";
     575                case SmbDailyairhumidityEnum : return "SmbDailyairhumidity";
     576                case SmbDailytemperatureEnum : return "SmbDailytemperature";
    568577                case SmbDEnum : return "SmbD";
    569578                case SmbDiniEnum : return "SmbDini";
     
    603612                case SmbS0pEnum : return "SmbS0p";
    604613                case SmbS0tEnum : return "SmbS0t";
     614                case SmbS0gcmEnum : return "SmbS0gcm";
    605615                case SmbSizeiniEnum : return "SmbSizeini";
    606616                case SmbSmbrefEnum : return "SmbSmbref";
     
    10971107                case SigmaVMEnum : return "SigmaVM";
    10981108                case SmbAnalysisEnum : return "SmbAnalysis";
     1109                case SMBsemicEnum : return "SMBsemic";
    10991110                case SMBcomponentsEnum : return "SMBcomponents";
    11001111                case SMBd18opddEnum : return "SMBd18opdd";
     
    11141125                case SMBpddSicopolisEnum : return "SMBpddSicopolis";
    11151126                case SMBgradientscomponentsEnum : return "SMBgradientscomponents";
     1127                case SmbRdlEnum : return "SmbRdl";
    11161128                case SmbRlapsEnum : return "SmbRlaps";
    11171129                case SmbRlapslgmEnum : return "SmbRlapslgm";
     
    11451157                case TaylorHoodEnum : return "TaylorHood";
    11461158                case TemperaturePDDEnum : return "TemperaturePDD";
     1159                case TemperatureSEMICEnum : return "TemperatureSEMIC";
    11471160                case TetraEnum : return "Tetra";
    11481161                case TetraInputEnum : return "TetraInput";
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23524 r23540  
    578578              else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
    579579              else if (strcmp(name,"SmbC")==0) return SmbCEnum;
     580              else if (strcmp(name,"SmbDailysnowfall")==0) return SmbDailysnowfallEnum;
     581              else if (strcmp(name,"SmbDailyrainfall")==0) return SmbDailyrainfallEnum;
     582              else if (strcmp(name,"SmbDailydsradiation")==0) return SmbDailydsradiationEnum;
     583              else if (strcmp(name,"SmbDailydlradiation")==0) return SmbDailydlradiationEnum;
     584              else if (strcmp(name,"SmbDailywindspeed")==0) return SmbDailywindspeedEnum;
     585              else if (strcmp(name,"SmbDailypressure")==0) return SmbDailypressureEnum;
     586              else if (strcmp(name,"SmbDailyairdensity")==0) return SmbDailyairdensityEnum;
     587              else if (strcmp(name,"SmbDailyairhumidity")==0) return SmbDailyairhumidityEnum;
     588              else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum;
    580589              else if (strcmp(name,"SmbD")==0) return SmbDEnum;
    581590              else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
     
    615624              else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
    616625              else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum;
     626              else if (strcmp(name,"SmbS0gcm")==0) return SmbS0gcmEnum;
    617627              else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum;
    618628              else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;
    619629              else if (strcmp(name,"SmbSmbCorr")==0) return SmbSmbCorrEnum;
    620630              else if (strcmp(name,"SmbTa")==0) return SmbTaEnum;
    621               else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum;
    622635              else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
    623636              else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
     
    629642              else if (strcmp(name,"SmbVmean")==0) return SmbVmeanEnum;
    630643              else if (strcmp(name,"SmbTz")==0) return SmbTzEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"SmbV")==0) return SmbVEnum;
     644              else if (strcmp(name,"SmbV")==0) return SmbVEnum;
    635645              else if (strcmp(name,"SmbVz")==0) return SmbVzEnum;
    636646              else if (strcmp(name,"SmbW")==0) return SmbWEnum;
     
    742752              else if (strcmp(name,"Contour")==0) return ContourEnum;
    743753              else if (strcmp(name,"Contours")==0) return ContoursEnum;
    744               else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
    745758              else if (strcmp(name,"ControlInputValues")==0) return ControlInputValuesEnum;
    746759              else if (strcmp(name,"ControlInputMins")==0) return ControlInputMinsEnum;
     
    752765              else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
    753766              else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"DataSet")==0) return DataSetEnum;
     767              else if (strcmp(name,"DataSet")==0) return DataSetEnum;
    758768              else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    759769              else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
     
    865875              else if (strcmp(name,"Intersect")==0) return IntersectEnum;
    866876              else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
    867               else if (strcmp(name,"IntInput")==0) return IntInputEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"IntInput")==0) return IntInputEnum;
    868881              else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum;
    869882              else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
     
    875888              else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;
    876889              else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum;
     890              else if (strcmp(name,"LACrouzeixRaviart")==0) return LACrouzeixRaviartEnum;
    881891              else if (strcmp(name,"LambdaS")==0) return LambdaSEnum;
    882892              else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
     
    988998              else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
    989999              else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
    990               else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
    9911004              else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
    9921005              else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
     
    9981011              else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum;
    9991012              else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"Outputdefinition36")==0) return Outputdefinition36Enum;
     1013              else if (strcmp(name,"Outputdefinition36")==0) return Outputdefinition36Enum;
    10041014              else if (strcmp(name,"Outputdefinition37")==0) return Outputdefinition37Enum;
    10051015              else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum;
     
    11111121              else if (strcmp(name,"SealevelUmotion")==0) return SealevelUmotionEnum;
    11121122              else if (strcmp(name,"SedimentHeadStacked")==0) return SedimentHeadStackedEnum;
    1113               else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
    11141127              else if (strcmp(name,"Seg")==0) return SegEnum;
    11151128              else if (strcmp(name,"SegInput")==0) return SegInputEnum;
     
    11211134              else if (strcmp(name,"SigmaVM")==0) return SigmaVMEnum;
    11221135              else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
     1136              else if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum;
     1137              else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
    11271138              else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
    11281139              else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
     
    11411152              else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
    11421153              else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
     1154              else if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
    11431155              else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
    11441156              else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
     
    11721184              else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
    11731185              else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum;
     1186              else if (strcmp(name,"TemperatureSEMIC")==0) return TemperatureSEMICEnum;
    11741187              else if (strcmp(name,"Tetra")==0) return TetraEnum;
    11751188              else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
  • TabularUnified issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r23439 r23540  
    185185                case 10: return SMBpddSicopolisEnum;
    186186                case 11: return SMBgradientscomponentsEnum;
     187                case 12: return SMBsemicEnum;   
    187188                default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
    188189        }
Note: See TracChangeset for help on using the changeset viewer.