Changeset 23366


Ignore:
Timestamp:
Oct 2, 2018, 3:57:47 AM (8 years ago)
Author:
bdef
Message:

NEW: adding a smb scheme that compute runoff separately (smbcore is called two times in transient to provide runoff to hydro model

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

Legend:

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

    r23066 r23366  
    313313        }
    314314        /*Intermediaries */
     315        int        smb_model;
    315316        IssmDouble dt,scalar,water_head;
    316         IssmDouble water_load,transfer;
     317        IssmDouble water_load,transfer,runoff_value;
    317318        IssmDouble epl_storing,epl_transmitivity;
    318319        IssmDouble Jdet;
    319320        IssmDouble residual,connectivity;
    320321
    321         IssmDouble *xyz_list     = NULL;
    322         Input*      old_wh_input = NULL;
     322        IssmDouble              *xyz_list                                                       = NULL;
     323        Input*                           old_wh_input                                   = NULL;
     324        Input*                           surface_runoff_input = NULL;
    323325
    324326        /*Fetch number of nodes and dof for this finite element*/
    … …  
    334336        //basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
    335337        basalelement ->FindParam(&dt,HydrologydtEnum);
    336 
    337         Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessHydrostepEnum); _assert_(epl_thick_input);
    338         Input* sed_head_input  = basalelement->GetInput(SedimentHeadHydrostepEnum); _assert_(sed_head_input);
    339         Input* epl_head_input    = basalelement->GetInput(EplHeadHydrostepEnum); _assert_(epl_head_input);
    340         Input* water_input               = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input);
    341         Input* residual_input  = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input);
    342         Input* base_input                        = basalelement->GetInput(BaseEnum); _assert_(base_input);
     338        basalelement ->FindParam(&smb_model,SmbEnum);
     339
     340        Input*  epl_thick_input                  = basalelement->GetInput(HydrologydcEplThicknessHydrostepEnum); _assert_(epl_thick_input);
     341        Input*  sed_head_input                   = basalelement->GetInput(SedimentHeadHydrostepEnum); _assert_(sed_head_input);
     342        Input*  epl_head_input                   = basalelement->GetInput(EplHeadHydrostepEnum); _assert_(epl_head_input);
     343        Input*  basal_melt_input                 = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input);
     344        Input*  residual_input                   = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input);
     345        Input*  base_input                                       = basalelement->GetInput(BaseEnum); _assert_(base_input);
    343346
    344347        if(dt!= 0.){
    345348                old_wh_input = basalelement->GetInput(EplHeadOldEnum);            _assert_(old_wh_input);
    346349        }
     350        if(smb_model==SMBgradientscomponentsEnum){
     351                surface_runoff_input = basalelement->GetInput(SmbRunoffEnum);
     352        }
     353
    347354        /* Start  looping on the number of gaussian points: */
    348355        Gauss* gauss           = basalelement->NewGauss(2);
    … …  
    355362
    356363                /*Loading term*/
    357                 water_input->GetInputValue(&water_load,gauss);
    358                 scalar = Jdet*gauss->weight*(water_load);
     364                basal_melt_input->GetInputValue(&water_load,gauss);
     365                surface_runoff_input->GetInputValue(&runoff_value,gauss);
     366                scalar = Jdet*gauss->weight*(water_load+runoff_value);
    359367                //scalar = Jdet*gauss->weight*(water_load)/epl_transmitivity;
    360368                if(dt!=0.) scalar = scalar*dt;
    … …  
    524532        IssmDouble  EPLgrad2;
    525533        IssmDouble  EPL_N;
     534        IssmDouble  opening,closing;
    526535
    527536        femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
    … …  
    589598                                EPLgrad2 = (epl_slopeX[i]*epl_slopeX[i])+(epl_slopeY[i]*epl_slopeY[i]);
    590599                                /*And proceed to the real thing*/
    591                                 thickness[i] = old_thickness[i]/(1.0
    592                                                                                                                                                                  -((rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat))
    593                                                                                                                                                                  +((2.0*A*dt*pow(EPL_N,n))/(pow(n,n))));
     600                                opening=(rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat);
     601                                closing=(2.0*A*dt*pow(EPL_N,n))/(pow(n,n));
     602                                /*implicit*/
     603                                thickness[i] = old_thickness[i]/(1.0-opening+closing);
     604                                /*explicit*/
     605                                //thickness[i] = old_thickness[i]*(1.0+opening-closing);
     606                                /*centered*/
     607                                //thickness[i] = old_thickness[i]*(1.0+opening-closing)/(1.0-opening+closing);
     608
     609                                if(element->nodes[i]->Sid()==2299){
     610                                        printf("for node %i \n",element->nodes[i]->Sid());
     611                                        printf(" old thickness is  %g \n",old_thickness[i]);
     612                                        printf(" new thickness is  %g \n",thickness[i]);
     613                                        printf(" closing is %g \n",((2.0*A*dt*pow(EPL_N,n))/(pow(n,n))));
     614                                        printf(" opening is %g \n",((rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat)));
     615                                }
    594616                                /*Take care of otherthikening*/
    595617                                if(thickness[i]>max_thick){
    … …  
    689711                        vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
    690712                        /* If epl thickness gets under colapse thickness, close the layer */
     713                                if(element->nodes[i]->Sid()==2299){
     714                                        printf("thickness for maksing for node %i is %g \n",element->nodes[i]->Sid(),epl_thickness[i]);}
    691715                        if(epl_thickness[i]<colapse_thick){
     716                                if(element->nodes[i]->Sid()==2299){
     717                                        printf("maksing node %i\n",element->nodes[i]->Sid());}
    692718                                vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
    693719                                recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
  • issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp

    r23066 r23366  
    105105                iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum);
    106106        }
    107 
    108107        if(isefficientlayer){
    109108                iomodel->FetchDataToInput(elements,"md.hydrology.mask_eplactive_node",HydrologydcMaskEplactiveNodeEnum);
    … …  
    342341        /*Intermediaries */
    343342        bool       active_element,isefficientlayer;
     343        int        smb_model;
    344344        IssmDouble dt,scalar,sediment_storing;
    345345        IssmDouble water_head,sediment_transmitivity;
    346         IssmDouble water_load,transfer;
     346        IssmDouble water_load,runoff_value,transfer;
    347347        IssmDouble Jdet;
    348348
    349349        IssmDouble *xyz_list             = NULL;
    350350        Input*      active_element_input = NULL;
    351         Input*      old_wh_input = NULL;
     351        Input*      old_wh_input         = NULL;
     352        Input*      surface_runoff_input = NULL;
    352353
    353354        /*Fetch number of nodes and dof for this finite element*/
    … …  
    361362        basalelement->GetVerticesCoordinates(&xyz_list);
    362363        //basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
    363         basalelement ->FindParam(&dt,HydrologydtEnum);
     364        basalelement->FindParam(&dt,HydrologydtEnum);
    364365        basalelement->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
    365 
    366         Input* sed_head_input = basalelement->GetInput(SedimentHeadHydrostepEnum);
    367         Input* epl_head_input = basalelement->GetInput(EplHeadHydrostepEnum);
    368         Input* base_input                 = basalelement->GetInput(BaseEnum);
    369         Input* water_input        = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input);
    370         Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input);
     366        basalelement->FindParam(&smb_model,SmbEnum);
     367
     368        Input*  sed_head_input                   = basalelement->GetInput(SedimentHeadHydrostepEnum);
     369        Input*  epl_head_input                   = basalelement->GetInput(EplHeadHydrostepEnum);
     370        Input*  base_input                                       = basalelement->GetInput(BaseEnum);
     371        Input*  basal_melt_input                 = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input);
     372        Input*  SedTrans_input                   = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input);
    371373
    372374        if(dt!= 0.){
    373375                old_wh_input = basalelement->GetInput(SedimentHeadOldEnum);                  _assert_(old_wh_input);
    374376        }
     377        if(smb_model==SMBgradientscomponentsEnum){
     378                surface_runoff_input = basalelement->GetInput(SmbRunoffEnum);
     379        }
     380
    375381        /*Transfer related Inputs*/
    376382        if(isefficientlayer){
    … …  
    388394                /*Loading term*/
    389395                if(!isefficientlayer){
    390                         water_input->GetInputValue(&water_load,gauss);
    391                         scalar = Jdet*gauss->weight*(water_load);
     396                        basal_melt_input->GetInputValue(&water_load,gauss);
     397                        surface_runoff_input->GetInputValue(&runoff_value,gauss);
     398                        scalar = Jdet*gauss->weight*(water_load+runoff_value);
    392399                        //scalar = Jdet*gauss->weight*(water_load)/sediment_transmitivity;
    393400                        if(dt!=0.) scalar = scalar*dt;
    … …  
    400407                        active_element_input->GetInputValue(&active_element);
    401408                        if(!active_element){
    402                                 water_input->GetInputValue(&water_load,gauss);
    403                                 scalar = Jdet*gauss->weight*(water_load);
     409                                basal_melt_input->GetInputValue(&water_load,gauss);
     410                                surface_runoff_input->GetInputValue(&runoff_value,gauss);
     411                                scalar = Jdet*gauss->weight*(water_load+runoff_value);
    404412                                //scalar = Jdet*gauss->weight*(water_load)/sediment_transmitivity;
    405413                                if(dt!=0.) scalar = scalar*dt;
  • issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp

    r23328 r23366  
    3838        /*Figure out smb model: */
    3939        iomodel->FindConstant(&smb_model,"md.smb.model");
    40 
    4140        switch(smb_model){
    4241                case SMBforcingEnum:
    … …  
    152151                        iomodel->FetchDataToInput(elements,"md.smb.refreeze",SmbRefreezeEnum,0.);
    153152                        break;
     153                case SMBgradientscomponentsEnum:
     154                        iomodel->FetchDataToInput(elements,"md.smb.accualti",SmbAccualtiEnum);
     155                        iomodel->FetchDataToInput(elements,"md.smb.accugrad",SmbAccugradEnum);
     156                        iomodel->FetchDataToInput(elements,"md.smb.runoffalti",SmbRunoffaltiEnum);
     157                        iomodel->FetchDataToInput(elements,"md.smb.runoffgrad",SmbRunoffgradEnum);
     158                        break;
    154159                default:
    155160                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
    … …  
    262267                        /*Nothing to add to parameters*/
    263268                        break;
     269                case SMBgradientscomponentsEnum:
     270                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum));
     271                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.accugrad",SmbAccugradEnum));
     272                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum));
     273                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffgrad",SmbRunoffgradEnum));
     274
     275                          iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
     276                          parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M));
     277                          iomodel->DeleteData(temp,"md.smb.accuref");
     278
     279                          iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
     280                          parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M));
     281                          iomodel->DeleteData(temp,"md.smb.runoffref");
     282                        break;
    264283                default:
    265284                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
    … …  
    296315                                if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
    297316                                Delta18oParameterizationx(femmodel);
    298                         } 
     317                        }
    299318                        if(ismungsm){
    300319                                if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
    301320                                MungsmtpParameterizationx(femmodel);
    302                         } 
     321                        }
    303322                        if(VerboseSolution()) _printf0_("   call positive degree day module\n");
    304323                        PositiveDegreeDayx(femmodel);
    … …  
    341360                        /*Nothing to be done*/
    342361                        break;
     362                case SMBgradientscomponentsEnum:
     363                        if(VerboseSolution())_printf0_("        call smb gradients components module\n");
     364                        SmbGradientsComponentsx(femmodel);
     365                        break;
    343366                default:
    344367                        _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r23317 r23366  
    653653        xDelete<IssmDouble>(tmp);
    654654
     655}
     656/*}}}*/
     657void       Element::SmbGradCompParameterization(void){/*{{{*/
     658
     659        /*Are we on the base? If not, return*/
     660        if(!IsOnBase()) return;
     661        int        numvertices = this->GetNumberOfVertices();
     662
     663        int        i;
     664        IssmDouble accuref, runoffref; //reference values at given altitude
     665        IssmDouble accualti, runoffalti; //reference altitudes
     666        IssmDouble accugrad, runoffgrad; //gradients from reference altitude
     667        IssmDouble rho_water, rho_ice;
     668        IssmDouble time;
     669
     670        IssmDouble*             smb              = xNew<IssmDouble>(numvertices);
     671        IssmDouble*             surf     = xNew<IssmDouble>(numvertices);
     672        IssmDouble*             accu     = xNew<IssmDouble>(numvertices);
     673        IssmDouble*             runoff = xNew<IssmDouble>(numvertices);
     674
     675        /*Get material parameters :*/
     676        rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
     677        rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
     678
     679        /*Recover parameters*/
     680        parameters->FindParam(&time,TimeEnum);
     681        parameters->FindParam(&accualti,SmbAccualtiEnum);
     682        parameters->FindParam(&accugrad,SmbAccugradEnum);
     683        parameters->FindParam(&runoffalti,SmbRunoffaltiEnum);
     684        parameters->FindParam(&runoffgrad,SmbRunoffgradEnum);
     685
     686        /*Recover reference values at current time*/
     687        parameters->FindParam(&accuref,SmbAccurefEnum,time);
     688        parameters->FindParam(&runoffref,SmbRunoffrefEnum,time);
     689
     690        /*Recover surface elevation*/
     691        GetInputListOnVertices(&surf[0],SurfaceEnum);
     692
     693        /*Compute the temperature and precipitation*/
     694        for(int iv=0;iv<numvertices;iv++){
     695                accu[iv]=max(0.,(accuref+(surf[iv]-accualti)*accugrad));
     696                runoff[iv]=max(0.,(runoffref+(surf[iv]-runoffalti)*runoffgrad));
     697                smb[iv]=(accu[iv]-runoff[iv])*rho_ice/rho_water;
     698        }
     699        switch(this->ObjectEnum()){
     700        case TriaEnum:
     701                this->inputs->AddInput(new TriaInput(SmbMassBalanceEnum,&smb[0],P1Enum));
     702                this->inputs->AddInput(new TriaInput(SmbRunoffEnum,&runoff[0],P1Enum));
     703                break;
     704        case PentaEnum:
     705                this->inputs->AddInput(new PentaInput(SmbMassBalanceEnum,&smb[0],P1Enum));
     706                this->inputs->AddInput(new PentaInput(SmbRunoffEnum,&runoff[0],P1Enum));
     707                this->InputExtrude(SmbMassBalanceEnum,-1);
     708                this->InputExtrude(SmbRunoffEnum,-1);
     709                break;
     710        case TetraEnum:
     711                this->inputs->AddInput(new TetraInput(SmbMassBalanceEnum,&smb[0],P1Enum));
     712                this->inputs->AddInput(new TetraInput(SmbRunoffEnum,&runoff[0],P1Enum));
     713                this->InputExtrude(SmbMassBalanceEnum,-1);
     714                this->InputExtrude(SmbRunoffEnum,-1);
     715                break;
     716        default: _error_("Not implemented yet");
     717        }
     718        /* this->AddInput(SmbMassBalanceEnum,smb,P1Enum); */
     719        /* this->AddInput(SmbRunoffEnum,runoff,P1Enum); */
     720        /*clean-up*/
     721        xDelete<IssmDouble>(surf);
     722        xDelete<IssmDouble>(accu);
     723        xDelete<IssmDouble>(runoff);
     724        xDelete<IssmDouble>(smb);
    655725}
    656726/*}}}*/
    … …  
    25882658        rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
    25892659        rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
    2590        
     2660
    25912661        /*Get parameters for height corrections*/
    25922662        desfac=this->matpar->GetMaterialParameter(SmbDesfacEnum);
    25932663        rlaps=this->matpar->GetMaterialParameter(SmbRlapsEnum);
    2594        
     2664
    25952665        /*Recover monthly temperatures and precipitation*/
    25962666        Input*     input=this->inputs->GetInput(SmbMonthlytemperaturesEnum); _assert_(input);
    … …  
    25982668        /*Recover smb correction term */
    25992669        Input*     input3=this->inputs->GetInput(SmbSmbCorrEnum); _assert_(input3);
    2600        
     2670
    26012671        /* Get time */
    26022672        this->parameters->FindParam(&time,TimeEnum);
    … …  
    26072677        IssmDouble MU_0         = 9.7155; //Firn-warming correction, in (d*deg C)/(mm WE)
    26082678        IssmDouble mu           = MU_0*(1000.0*86400.0)*(rho_ice/rho_water);   // (d*deg C)/(mm WE) --> (s*deg C)/(m IE)
    2609        
     2679
    26102680        /*loop over vertices: */
    26112681        Gauss* gauss=this->NewGauss();
    … …  
    26382708                /*Get yearlytemperatures */
    26392709                for(int month=0;month<12;month++) yearlytemperatures[iv]=yearlytemperatures[iv]+((monthlytemperatures[iv*12+month]+273.15)+t_ampl[iv])*inv_twelve; // Has to be in Kelvin
    2640        
    2641                 if(isfirnwarming){ 
     2710
     2711                if(isfirnwarming){
    26422712                        if(melt_star[iv]>=melt[iv]){
    26432713                                yearlytemperatures[iv]= yearlytemperatures[iv]+mu*(melt_star[iv]-melt[iv]);
    … …  
    27202790        xDelete<IssmDouble>(s0t);
    27212791        xDelete<IssmDouble>(s0p);
    2722         xDelete<IssmDouble>(t_ampl); 
    2723         xDelete<IssmDouble>(p_ampl); 
     2792        xDelete<IssmDouble>(t_ampl);
     2793        xDelete<IssmDouble>(p_ampl);
    27242794        xDelete<IssmDouble>(smbcorr);
    27252795        xDelete<IssmDouble>(melt_star);
    … …  
    27332803        /*Some intputs need to be computed, even if they are already in inputs, they might not be up to date!*/
    27342804        switch(output_enum){
    2735                 case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break;
    2736                 case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break;
     2805        case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break;
     2806        case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break;
    27372807                case StressTensorxxEnum:
    27382808                case StressTensorxyEnum:
    … …  
    27472817                case StrainRateyzEnum:
    27482818                case StrainRatezzEnum:
    2749                 case StrainRateeffectiveEnum: this->ComputeStrainRate(); break;
     2819          case StrainRateeffectiveEnum: this->ComputeStrainRate(); break;
    27502820                case DeviatoricStressxxEnum:
    27512821                case DeviatoricStressxyEnum:
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r23317 r23366  
    11/*!\file:  Element.h
    22 * \brief abstract class for Element object
    3  * This class is a place holder for the Tria and the Penta elements. 
     3 * This class is a place holder for the Tria and the Penta elements.
    44 * It is derived from Element, so DataSets can contain them.
    5  */ 
     5 */
    66
    77#ifndef _ELEMENT_H_
    … …  
    5050                int  element_type;
    5151
    52         public: 
     52        public:
    5353                /*Constructors/Destructores*/
    5454                Element();
    … …  
    6868                void               Delta18oParameterization(void);
    6969                void               Delta18opdParameterization(void);
     70                void               SmbGradCompParameterization(void);
    7071                IssmDouble         Divergence(void);
    7172                void               dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    … …  
    130131                void               InputUpdateFromConstant(int constant, int name);
    131132                void               InputUpdateFromConstant(bool constant, int name);
    132                 bool               IsFloating(); 
     133                bool               IsFloating();
    133134                bool               IsIceInElement();
    134135                bool               IsLandInElement();
    135136                bool               IsWaterInElement();
    136                 void               LinearFloatingiceMeltingRate(); 
    137                 void               SpatialLinearFloatingiceMeltingRate(); 
    138                 void               MantlePlumeGeothermalFlux(); 
     137                void               LinearFloatingiceMeltingRate();
     138                void               SpatialLinearFloatingiceMeltingRate();
     139                void               MantlePlumeGeothermalFlux();
    139140                void               MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses);
    140141                void               MigrateGroundingLine(IssmDouble* sheet_ungrounding);
    141                 void               MismipFloatingiceMeltingRate(); 
     142                void               MismipFloatingiceMeltingRate();
    142143                void               MungsmtpParameterization(void);
    143144                ElementMatrix*     NewElementMatrix(int approximation_enum=NoneApproximationEnum);
    … …  
    241242                virtual bool       IsFaceOnBoundary(void)=0;
    242243                virtual bool       IsIcefront(void)=0;
    243                 virtual bool       IsNodeOnShelfFromFlags(IssmDouble* flags)=0; 
     244                virtual bool       IsNodeOnShelfFromFlags(IssmDouble* flags)=0;
    244245                virtual bool       IsOnBase()=0;
    245246                virtual bool       IsOnSurface()=0;
    … …  
    331332                virtual IssmDouble    OceanAverage(IssmDouble* Sg)=0;
    332333                virtual IssmDouble    OceanArea(void)=0;
    333                 virtual void          SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea)=0; 
     334                virtual void          SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea)=0;
    334335                virtual void          SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0;
    335336                virtual void          SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea)=0;
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp

    r23317 r23366  
    115115                                        iomodel->FindConstant(&this->rlaps,"md.smb.rlaps");
    116116                                        iomodel->FindConstant(&this->rlapslgm,"md.smb.rlapslgm");
    117                                         iomodel->FindConstant(&this->dpermil,"md.smb.dpermil");                                 
     117                                        iomodel->FindConstant(&this->dpermil,"md.smb.dpermil");
    118118                                case SMBgradientsEnum:
    119119                                        /*Nothing to add*/
    … …  
    129129                                        break;
    130130                                case SMBmeltcomponentsEnum:
     131                                        /*Nothing to add*/
     132                                        break;
     133                                case SMBgradientscomponentsEnum:
    131134                                        /*Nothing to add*/
    132135                                        break;
    … …  
    174177                        break;
    175178                case MaterialsEnum:
    176                         //we have several types of materials. Retrieve this info first: 
     179                        //we have several types of materials. Retrieve this info first:
    177180                        iomodel->FetchData(&nature,&nnat,&dummy,"md.materials.nature");
    178181
    179                         //go through list of materials, and create constant parameters accordingly: 
    180                         for(int i=0;i<nnat;i++){ 
     182                        //go through list of materials, and create constant parameters accordingly:
     183                        for(int i=0;i<nnat;i++){
    181184                                switch(IoCodeToEnumMaterials(nature[i])){ //{{{
    182185                                        case MatlithoEnum:
    … …  
    223226                                                                iomodel->FindConstant(&this->rlaps,"md.smb.rlaps");
    224227                                                                iomodel->FindConstant(&this->rlapslgm,"md.smb.rlapslgm");
    225                                                                 iomodel->FindConstant(&this->dpermil,"md.smb.dpermil");                                 
     228                                                                iomodel->FindConstant(&this->dpermil,"md.smb.dpermil");
    226229                                                        case SMBgradientsEnum:
    227230                                                                /*Nothing to add*/
    … …  
    241244                                                        default:
    242245                                                                _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
    243                                                 } 
     246                                                }
    244247                                                if(hydrology_model==HydrologydcEnum){
    245248                                                        iomodel->FindConstant(&this->sediment_compressibility,"md.hydrology.sediment_compressibility");
    … …  
    358361
    359362        this->Echo();
    360 }               
     363}
    361364/*}}}*/
    362365void Matpar::Echo(void){/*{{{*/
    … …  
    389392        _printf_("   sediment_porosity: " << sediment_porosity << "\n");
    390393        _printf_("   sediment_thickness: " << sediment_thickness << "\n");
    391         _printf_("   water_compressibility: " << water_compressibility << "\n");       
    392         _printf_("   epl_compressibility: " << epl_compressibility << "\n");   
    393         _printf_("   epl_porosity: " << epl_porosity << "\n"); 
    394         _printf_("   epl_init_thickness: " << epl_init_thickness << "\n");     
    395         _printf_("   epl_colapse_thickness: " << epl_colapse_thickness << "\n");       
    396         _printf_("   epl_max_thickness: " << epl_max_thickness << "\n");       
    397         _printf_("   epl_conductivity: " << epl_conductivity << "\n"); 
    398         _printf_("   lithosphere_shear_modulus: " << lithosphere_shear_modulus << "\n");       
    399         _printf_("   lithosphere_density: " << lithosphere_density << "\n");   
    400         _printf_("   mantle_shear_modulus: " << mantle_shear_modulus << "\n"); 
    401         _printf_("   mantle_density: " << mantle_density << "\n");     
    402         _printf_("   earth_density: " << earth_density << "\n");       
     394        _printf_("   water_compressibility: " << water_compressibility << "\n");
     395        _printf_("   epl_compressibility: " << epl_compressibility << "\n");
     396        _printf_("   epl_porosity: " << epl_porosity << "\n");
     397        _printf_("   epl_init_thickness: " << epl_init_thickness << "\n");
     398        _printf_("   epl_colapse_thickness: " << epl_colapse_thickness << "\n");
     399        _printf_("   epl_max_thickness: " << epl_max_thickness << "\n");
     400        _printf_("   epl_conductivity: " << epl_conductivity << "\n");
     401        _printf_("   lithosphere_shear_modulus: " << lithosphere_shear_modulus << "\n");
     402        _printf_("   lithosphere_density: " << lithosphere_density << "\n");
     403        _printf_("   mantle_shear_modulus: " << mantle_shear_modulus << "\n");
     404        _printf_("   mantle_density: " << mantle_density << "\n");
     405        _printf_("   earth_density: " << earth_density << "\n");
    403406        return;
    404407}
    … …  
    520523                        this->dpermil=constant;
    521524                        break;
    522                 default: 
     525                default:
    523526                        break;
    524527        }
  • issm/trunk-jpl/src/c/cores/transient_core.cpp

    r23317 r23366  
    180180                for(int i=0;i<ngrids_ocean;i++) if(icemask_oceangrid[i]>0.) icebase_oceangrid[i]=+9999.;
    181181                xDelete<IssmDouble>(icemask_oceangrid);
    182                        
     182
    183183                if(my_rank==0){
    184184                        ISSM_MPI_Send(icebase_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
    … …  
    384384                }
    385385
     386                /*duplicating smb position to have runoff value*/
     387                if(issmb) smb_core(femmodel);
     388
    386389                if(ishydrology) hydrology_core(femmodel);
    387390
    … …  
    393396
    394397                /* from here on, prepare geometry for next time step*/
    395 
    396398                if(issmb) smb_core(femmodel);
    397399
    … …  
    403405
    404406                if(isgroundingline){
    405                
     407
    406408                        /*Start profiler*/
    407409                        femmodel->profiler->Start(GROUNDINGLINECORE);
    408                
     410
    409411                        if(VerboseSolution()) _printf0_("   computing new grounding line position\n");
    410412                        GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    … …  
    416418                        femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
    417419                        extrudefrombase_core(femmodel);
    418                        
     420
    419421                        /*Stop profiler*/
    420422                        femmodel->profiler->Stop(GROUNDINGLINECORE);
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp

    r23328 r23366  
    11/*!\file SurfaceMassBalancex
    2  * \brief: calculates SMB 
     2 * \brief: calculates SMB
    33 */
    44
    … …  
    105105                for(v=0;v<numvertices;v++){
    106106                        // if surface is above the ELA
    107                         if(s[v]>ela[v]){               
     107                        if(s[v]>ela[v]){
    108108                                smb[v]=b_pos[v]*(s[v]-ela[v]);
    109109                        }
    … …  
    167167        //    INPUT: surface elevation (m): hd(NA)
    168168        //    monthly mean surface sealevel temperature (degrees C): vTempsea(NA
    169         //    ,NTIME) 
     169        //    ,NTIME)
    170170        //    monthly mean precip rate (m/yr water equivalent): vPrec(NA,NTIME)
    171171        //    OUTPUT: mass-balance (m/yr ice): agd(NA)
    … …  
    174174        int    i, it, jj, itm;
    175175        IssmDouble DT = 0.02, sigfac, snormfac;
    176         IssmDouble signorm = 5.5;      // signorm : sigma of the temperature distribution for a normal day 
     176        IssmDouble signorm = 5.5;      // signorm : sigma of the temperature distribution for a normal day
    177177        IssmDouble siglim;       // sigma limit for the integration which is equal to 2.5 sigmanorm
    178178        IssmDouble signormc = signorm - 0.5;     // sigma of the temperature distribution for cloudy day
    … …  
    180180        IssmDouble tstep, tsint, tint, tstepc;
    181181        int    NPDMAX = 1504, NPDCMAX = 1454;
    182         //IssmDouble pdds[NPDMAX]={0}; 
     182        //IssmDouble pdds[NPDMAX]={0};
    183183        //IssmDouble pds[NPDCMAX]={0};
    184184        IssmDouble pddt, pd ; // pd : snow/precip fraction, precipitation falling as snow
    … …  
    193193        Element    *element = NULL;
    194194
    195         pdds=xNew<IssmDouble>(NPDMAX+1); 
    196         pds=xNew<IssmDouble>(NPDCMAX+1); 
     195        pdds=xNew<IssmDouble>(NPDMAX+1);
     196        pds=xNew<IssmDouble>(NPDCMAX+1);
    197197
    198198        // Get ismungsm parameter
    … …  
    216216
    217217        if(itm >= NPDMAX) _error_("increase NPDMAX in massBalance.cpp");
    218         for(it = 0; it < itm; it++){ 
     218        for(it = 0; it < itm; it++){
    219219                //    tstar = REAL(it)*DT-siglim;
    220220                tstar = it*DT-siglim;
    … …  
    263263}/*}}}*/
    264264void PositiveDegreeDaySicopolisx(FemModel* femmodel){/*{{{*/
    265        
     265
    266266        bool isfirnwarming;
    267267        femmodel->parameters->FindParam(&isfirnwarming,SmbIsfirnwarmingEnum);
    268        
     268
    269269        for(int i=0;i<femmodel->elements->Size();i++){
    270270                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
    … …  
    357357                /*Allocate all arrays*/
    358358                int         numvertices = element->GetNumberOfVertices();
    359                 IssmDouble* acc         = xNew<IssmDouble>(numvertices); 
     359                IssmDouble* acc         = xNew<IssmDouble>(numvertices);
    360360                IssmDouble* evap        = xNew<IssmDouble>(numvertices);
    361                 IssmDouble* runoff      = xNew<IssmDouble>(numvertices); 
     361                IssmDouble* runoff      = xNew<IssmDouble>(numvertices);
    362362                IssmDouble* smb         = xNew<IssmDouble>(numvertices);
    363363
    … …  
    399399                int         numvertices = element->GetNumberOfVertices();
    400400                IssmDouble* acc         = xNew<IssmDouble>(numvertices);
    401                 IssmDouble* evap        = xNew<IssmDouble>(numvertices); 
     401                IssmDouble* evap        = xNew<IssmDouble>(numvertices);
    402402                IssmDouble* melt        = xNew<IssmDouble>(numvertices);
    403403                IssmDouble* refreeze    = xNew<IssmDouble>(numvertices);
    … …  
    425425
    426426}/*}}}*/
     427void SmbGradientsComponentsx(FemModel* femmodel){/*{{{*/
     428
     429        // void SurfaceMassBalancex(hd,agd,ni){
     430        //    INPUT parameters: ni: working size of arrays
     431        //    INPUT: surface elevation (m): hd(NA)
     432        //    OUTPUT: mass-balance (m/yr ice): agd(NA)
     433
     434        for(int i=0;i<femmodel->elements->Size();i++){
     435                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
     436                element->SmbGradCompParameterization();
     437        }
     438
     439}/*}}}*/
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h

    r23317 r23366  
    11/*!\file:  SurfaceMassBalancex.h
    22 * \brief header file for SMB
    3  */ 
     3 */
    44
    55#ifndef _SurfaceMassBalancex_H
    … …  
    1919void SmbHenningx(FemModel* femmodel);
    2020void SmbComponentsx(FemModel* femmodel);
    21 void SmbMeltComponentsx(FemModel* femmodel); 
    22 
     21void SmbMeltComponentsx(FemModel* femmodel);
     22void SmbGradientsComponentsx(FemModel* femmodel);
    2323/*GEMB: */
    2424void       Gembx(FemModel* femmodel);
    25 void       GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY); 
     25void       GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY);
    2626IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT);
    2727void grainGrowth(IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid);
    … …  
    2929void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid);
    3030void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid);
    31 void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx,IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble dIce, int sid); 
     31void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx,IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble dIce, int sid);
    3232void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble dIce, int sid);
    3333void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23327 r23366  
    273273        SettingsSolverResidueThresholdEnum,
    274274        SettingsWaitonlockEnum,
     275        SmbAccualtiEnum,
     276        SmbAccugradEnum,
     277        SmbAccurefEnum,
    275278        SmbAdThreshEnum,
    276279        SmbAIceEnum,
    … …  
    304307        SmbPfacEnum,
    305308        SmbRequestedOutputsEnum,
     309        SmbRunoffaltiEnum,
     310        SmbRunoffgradEnum,
     311        SmbRunoffrefEnum,
    306312        SmbSealevEnum,
    307313        SmbSwIdxEnum,
    … …  
    528534        SealevelNEsaRateEnum,
    529535        SealevelRSLRateEnum,
    530         SealevelUEsaEnum, 
     536        SealevelUEsaEnum,
    531537        SealevelRSLEustaticRateEnum,
    532         SealevelNEsaEnum, 
     538        SealevelNEsaEnum,
    533539        SealevelUGiaEnum,
    534540        SealevelNGiaEnum,
    … …  
    11011107        SMBpddEnum,
    11021108        SMBpddSicopolisEnum,
     1109        SMBgradientscomponentsEnum,
    11031110        SmbRlapsEnum,
    11041111        SmbRlapslgmEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23329 r23366  
    281281                case SettingsSolverResidueThresholdEnum : return "SettingsSolverResidueThreshold";
    282282                case SettingsWaitonlockEnum : return "SettingsWaitonlock";
     283                case SmbAccualtiEnum : return "SmbAccualti";
     284                case SmbAccugradEnum : return "SmbAccugrad";
     285                case SmbAccurefEnum : return "SmbAccuref";
    283286                case SmbAdThreshEnum : return "SmbAdThresh";
    284287                case SmbAIceEnum : return "SmbAIce";
    … …  
    312315                case SmbPfacEnum : return "SmbPfac";
    313316                case SmbRequestedOutputsEnum : return "SmbRequestedOutputs";
     317                case SmbRunoffaltiEnum : return "SmbRunoffalti";
     318                case SmbRunoffgradEnum : return "SmbRunoffgrad";
     319                case SmbRunoffrefEnum : return "SmbRunoffref";
    314320                case SmbSealevEnum : return "SmbSealev";
    315321                case SmbSwIdxEnum : return "SmbSwIdx";
    … …  
    11051111                case SMBpddEnum : return "SMBpdd";
    11061112                case SMBpddSicopolisEnum : return "SMBpddSicopolis";
     1113                case SMBgradientscomponentsEnum : return "SMBgradientscomponents";
    11071114                case SmbRlapsEnum : return "SmbRlaps";
    11081115                case SmbRlapslgmEnum : return "SmbRlapslgm";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23329 r23366  
    287287              else if (strcmp(name,"SettingsSolverResidueThreshold")==0) return SettingsSolverResidueThresholdEnum;
    288288              else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
     289              else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum;
     290              else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum;
     291              else if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum;
    289292              else if (strcmp(name,"SmbAdThresh")==0) return SmbAdThreshEnum;
    290293              else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum;
    … …  
    318321              else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
    319322              else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
     323              else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum;
     324              else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum;
     325              else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum;
    320326              else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
    321327              else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
    … …  
    377383              else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
    378384              else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum;
    379               else if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum;
     385         else stage=4;
     386   }
     387   if(stage==4){
     388              if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum;
    380389              else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum;
    381390              else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum;
    … …  
    383392              else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
    384393              else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
    385          else stage=4;
    386    }
    387    if(stage==4){
    388               if (strcmp(name,"Velocity")==0) return VelocityEnum;
     394              else if (strcmp(name,"Velocity")==0) return VelocityEnum;
    389395              else if (strcmp(name,"WorldComm")==0) return WorldCommEnum;
    390396              else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum;
    … …  
    500506              else if (strcmp(name,"Ice")==0) return IceEnum;
    501507              else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
    502               else if (strcmp(name,"Input")==0) return InputEnum;
     508         else stage=5;
     509   }
     510   if(stage==5){
     511              if (strcmp(name,"Input")==0) return InputEnum;
    503512              else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
    504513              else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum;
    … …  
    506515              else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
    507516              else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
    508          else stage=5;
    509    }
    510    if(stage==5){
    511               if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
     517              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    512518              else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
    513519              else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
    … …  
    623629              else if (strcmp(name,"SmbVz")==0) return SmbVzEnum;
    624630              else if (strcmp(name,"SmbW")==0) return SmbWEnum;
    625               else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"SmbWini")==0) return SmbWiniEnum;
    626635              else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
    627636              else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
    … …  
    629638              else if (strcmp(name,"SmbZY")==0) return SmbZYEnum;
    630639              else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
     640              else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
    635641              else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
    636642              else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
    … …  
    746752              else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
    747753              else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
    748               else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
    749758              else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
    750759              else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum;
    … …  
    752761              else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum;
    753762              else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
     763              else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
    758764              else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum;
    759765              else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
    … …  
    869875              else if (strcmp(name,"LambdaS")==0) return LambdaSEnum;
    870876              else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum;
    871               else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
    872881              else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
    873882              else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
    … …  
    875884              else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
    876885              else if (strcmp(name,"Loads")==0) return LoadsEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
     886              else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
    881887              else if (strcmp(name,"LoveHi")==0) return LoveHiEnum;
    882888              else if (strcmp(name,"LoveHr")==0) return LoveHrEnum;
    … …  
    992998              else if (strcmp(name,"Outputdefinition37")==0) return Outputdefinition37Enum;
    993999              else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum;
    994               else if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum;
    9951004              else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
    9961005              else if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum;
    … …  
    9981007              else if (strcmp(name,"Outputdefinition42")==0) return Outputdefinition42Enum;
    9991008              else if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum;
     1009              else if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum;
    10041010              else if (strcmp(name,"Outputdefinition45")==0) return Outputdefinition45Enum;
    10051011              else if (strcmp(name,"Outputdefinition46")==0) return Outputdefinition46Enum;
    … …  
    11151121              else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
    11161122              else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
    1117               else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
    11181127              else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum;
    11191128              else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
    … …  
    11211130              else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
    11221131              else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
     1132              else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
    11271133              else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
    11281134              else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
    … …  
    11321138              else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
    11331139              else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
     1140              else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
    11341141              else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
    11351142              else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r23317 r23366  
    174174                case 9: return SMBgradientselaEnum;
    175175                case 10: return SMBpddSicopolisEnum;
     176                case 11: return SMBgradientscomponentsEnum;
    176177                default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
    177178        }
    … …  
    206207                case 3: return HydrologyshaktiEnum;
    207208                case 4: return HydrologypismEnum;
    208                 default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet"); 
     209                default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet");
    209210        }
    210211}/*}}}*/
    … …  
    212213        switch(enum_in){
    213214                case 1: return MatdamageiceEnum;
    214                 case 2: return MatestarEnum; 
     215                case 2: return MatestarEnum;
    215216                case 3: return MaticeEnum;
    216217                case 4: return MatenhancediceEnum;
    217218                case 5: return MatlithoEnum;
    218219                case 6: return MaterialsEnum;
    219                 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 
     220                default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet");
    220221        }
    221222}/*}}}*/
    … …  
    223224        switch(enum_in){
    224225                case 1: return FixedTimesteppingEnum;
    225                 case 2: return AdaptiveTimesteppingEnum; 
    226                 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 
     226                case 2: return AdaptiveTimesteppingEnum;
     227                default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet");
    227228        }
    228229}/*}}}*/
    … …  
    230231        switch(enum_in){
    231232                case 1: return AmrBamgEnum;
    232                 case 2: return AmrNeopzEnum; 
    233                 default: _error_("Marshalled AMR code \""<<enum_in<<"\" not supported yet"); 
     233                case 2: return AmrNeopzEnum;
     234                default: _error_("Marshalled AMR code \""<<enum_in<<"\" not supported yet");
    234235        }
    235236}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.