Changeset 23366


Ignore:
Timestamp:
10/02/18 03:57:47 (6 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.