Changeset 25534


Ignore:
Timestamp:
09/04/20 16:30:07 (5 years ago)
Author:
Eric.Larour
Message:

CHG: added output of bslr, bslrice and bslrhydro, as well as cumulated values.

Location:
issm/branches/trunk-larour-SLPS2020/src/c
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • issm/branches/trunk-larour-SLPS2020/src/c/analyses/SealevelriseAnalysis.cpp

    r25323 r25534  
    201201        parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.computesealevelchange",SolidearthSettingsComputesealevelchangeEnum));
    202202        parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.planetradius",SolidearthPlanetRadiusEnum));
     203        parameters->AddObject(new DoubleParam(CumBslrEnum,0.0));
     204        parameters->AddObject(new DoubleParam(CumBslrIceEnum,0.0));
     205        parameters->AddObject(new DoubleParam(CumBslrHydroEnum,0.0));
    203206
    204207        /*compute planet area and plug into parameters:*/
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Element.h

    r25318 r25534  
    378378                virtual IssmDouble    OceanAverage(IssmDouble* Sg, SealevelMasks* masks)=0;
    379379                virtual void          SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks)=0;
    380                 virtual void          SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks,IssmDouble oceanarea)=0;
     380                virtual IssmDouble    SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks,IssmDouble oceanarea)=0;
     381                virtual IssmDouble    SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks,IssmDouble oceanarea)=0;
     382                virtual void          SealevelriseEustaticBottomPressure(IssmDouble* Sgi, SealevelMasks* masks)=0;
    381383                virtual void          SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0;
    382384                virtual void          SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0;
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Penta.h

    r25318 r25534  
    216216                void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
    217217                void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
    218                 void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
     218                IssmDouble    SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){_error_("not implemented yet!");};
     219                IssmDouble    SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){_error_("not implemented yet!");};
     220                void    SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");};
    219221                void    SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
    220222                void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Seg.h

    r25318 r25534  
    173173                void    SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");};
    174174                void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
    175                 void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
     175                IssmDouble    SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){_error_("not implemented yet!");};
     176                IssmDouble    SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){_error_("not implemented yet!");};
     177                void    SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");};
    176178                void    SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
    177179                void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tetra.h

    r25318 r25534  
    179179                void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
    180180                void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
    181                 void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
     181                IssmDouble    SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){_error_("not implemented yet!");};
     182                IssmDouble    SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){_error_("not implemented yet!");};
     183                void    SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");};
    182184                void    SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
    183185                void    SealevelriseGeodetic(IssmDouble* Up ,IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tria.cpp

    r25323 r25534  
    56545654}
    56555655/*}}}*/
    5656 void    Tria::SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
    5657 
    5658         int bp_compute_fingerprints= 0;
    5659 
    5660         /*Compute bottom pressure contribution from ocean if requested:*/
    5661         this->parameters->FindParam(&bp_compute_fingerprints,DslComputeFingerprintsEnum);
    5662         if(bp_compute_fingerprints)this->SealevelriseBottomPressure(Sgi,masks);
    5663 
    5664         /*Compute eustatic ice contribution to sea level rise: */
    5665         this->SealevelriseEustaticIce(Sgi,peustatic,masks, oceanarea);
    5666 
    5667         /*Compute hydrological contribution to sea level rise: */
    5668         this->SealevelriseEustaticHydro(Sgi,peustatic,masks, oceanarea);
    5669 
    5670 
    5671 }
    5672 /*}}}*/
    5673 void    Tria::SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
     5656IssmDouble Tria::SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
    56745657
    56755658        /*diverse:*/
     
    56815664        bool scaleoceanarea= false;
    56825665
     5666        /*output: */
     5667        IssmDouble bslrice=0;
     5668
    56835669        /*elastic green function:*/
    56845670        IssmDouble* G=NULL;
     
    56895675        /*constants:*/
    56905676        IssmDouble constant=0;
    5691 
    5692         /*Initialize eustatic component: do not skip this step :):*/
    5693         IssmDouble eustatic = 0.;
    56945677
    56955678        /*early return if we are not on an ice cap:*/
     
    56985681                constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
    56995682                #endif
    5700                 *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
    5701                 return;
     5683                bslrice=0;
     5684                return bslrice;
    57025685        }
    57035686
     
    57085691                this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
    57095692                #endif
    5710                 *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
    5711                 return;
     5693                bslrice=0;
     5694                return bslrice;
    57125695        }
    57135696
     
    57745757        /*}}}*/
    57755758
    5776         /*Compute eustatic component:*/
     5759        /*Compute barystatic contribution:*/
    57775760        _assert_(oceanarea>0.);
    57785761        if(scaleoceanarea) oceanarea=3.619e+14; // use true ocean area, m^2
    5779         eustatic += rho_ice*area*phi*I/(oceanarea*rho_water);
     5762        bslrice = rho_ice*area*phi*I/(oceanarea*rho_water);
     5763        _assert_(!xIsNan<IssmDouble>(bslrice));
    57805764
    57815765        /*convert from m to kg/m^2:*/
     
    57855769        for(int i=0;i<gsize;i++) Sgi[i]+=G[i]*I;
    57865770
    5787         /*Assign output pointer:*/
    5788         _assert_(!xIsNan<IssmDouble>(eustatic));
    5789         *peustatic=eustatic;
    5790         return;
    5791 }
    5792 /*}}}*/
    5793 void    Tria::SealevelriseEustaticHydro(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
     5771        /*return :*/
     5772        return bslrice;
     5773}
     5774/*}}}*/
     5775IssmDouble Tria::SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/
    57945776
    57955777        /*diverse:*/
    57965778        int gsize;
    57975779        IssmDouble area;
    5798         IssmDouble phi=1.0; //WARNING: do not touch this, default is entire elemnt contributes eustatic
     5780        IssmDouble phi=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic
    57995781        IssmDouble W;  //change in water height thickness (Farrel and Clarke, Equ. 4)
    58005782        bool notfullygrounded=false;
     
    58085790        IssmDouble rho_freshwater;
    58095791
    5810 
    5811         /*Initialize eustatic component: grab from the previous eustatic core!:*/
    5812         IssmDouble eustatic = *peustatic;
     5792        /*output:*/
     5793        IssmDouble bslrhydro = 0;
    58135794
    58145795        /*early return if we are on an ice cap:*/
    5815         if(masks->isiceonly[this->lid]){ return; }
     5796        if(masks->isiceonly[this->lid]){
     5797                bslrhydro=0;
     5798                return bslrhydro;
     5799        }
    58165800
    58175801        /*early return if we are fully floating:*/
    5818         if (masks->isfullyfloating[this->lid]){ return; }
     5802        if (masks->isfullyfloating[this->lid]){
     5803                bslrhydro=0;
     5804                return bslrhydro;
     5805        }
    58195806
    58205807        /*If we are here, we are on earth, not on ice: */
     
    58385825        deltathickness_input->GetInputAverage(&W);
    58395826
    5840         /*Compute eustatic component:*/
     5827        /*Compute barystatic component:*/
    58415828        _assert_(oceanarea>0.);
    58425829        if(scaleoceanarea) oceanarea=3.619e+14; // use true ocean area, m^2
    5843         eustatic += rho_freshwater*area*phi*W/(oceanarea*rho_water);
     5830        bslrhydro = rho_freshwater*area*phi*W/(oceanarea*rho_water);
     5831        _assert_(!xIsNan<IssmDouble>(bslrhydro));
    58445832
    58455833        /*convert from m to kg/m^2:*/
     
    58495837        for(int i=0;i<gsize;i++) Sgi[i]+=G[i]*W;
    58505838
    5851         /*Assign output pointer:*/
    5852         _assert_(!xIsNan<IssmDouble>(eustatic));
    5853         *peustatic=eustatic; //do not forget the +, otherwise, you'll wipe out previous eustatic contributions!
    5854         return;
    5855 }
    5856 /*}}}*/
    5857 void    Tria::SealevelriseBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){ /*{{{*/
     5839        /*output:*/
     5840        return bslrhydro;
     5841}
     5842/*}}}*/
     5843void    Tria::SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){ /*{{{*/
    58585844
    58595845        /*diverse:*/
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tria.h

    r25318 r25534  
    166166                void    SetSealevelMasks(SealevelMasks* masks);
    167167                void    SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
    168                 void    SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
    169                 void    SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
    170                 void    SealevelriseEustaticHydro(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
    171                 void    SealevelriseBottomPressure(IssmDouble* Sgi,SealevelMasks* masks);
     168                IssmDouble    SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea);
     169                IssmDouble    SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea);
     170                void    SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks);
    172171                void    SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks);
    173172                void    SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks);
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/FemModel.cpp

    r25361 r25534  
    47064706#endif
    47074707#ifdef _HAVE_SEALEVELRISE_
    4708 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks) { /*{{{*/
     4708void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, SealevelMasks* masks) { /*{{{*/
    47094709
    47104710        /*serialized vectors:*/
    4711         IssmDouble  eustatic       = 0.;
    4712         IssmDouble  eustatic_cpu   = 0.;
    4713         IssmDouble  eustatic_cpu_e = 0.;
     4711        IssmDouble  bslrice       = 0.;
     4712        IssmDouble  bslrice_cpu   = 0.;
     4713        IssmDouble  bslrhydro       = 0.;
     4714        IssmDouble  bslrhydro_cpu   = 0.;
    47144715        IssmDouble  area      = 0.;
    47154716        IssmDouble  oceanarea      = 0.;
    47164717        IssmDouble  oceanarea_cpu  = 0.;
     4718        int bp_compute_fingerprints= 0;
    47174719
    47184720   /*Initialize temporary vector that will be used to sum eustatic components
     
    47334735        _assert_(oceanarea>0.);
    47344736
    4735         /*Call the sea level rise core: */
     4737        /*Call the sea level rise core for ice : */
     4738        bslrice_cpu=0;
    47364739        for(int i=0;i<elements->Size();i++){
    47374740                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
    4738                 element->SealevelriseEustatic(RSLgi,&eustatic_cpu_e,masks, oceanarea);
    4739                 eustatic_cpu+=eustatic_cpu_e;
     4741                bslrice_cpu+=element->SealevelriseEustaticIce(RSLgi,masks, oceanarea);
     4742        }
     4743
     4744        /*Call the sea level rise core for hydro: */
     4745        bslrhydro_cpu=0;
     4746        for(int i=0;i<elements->Size();i++){
     4747                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
     4748                bslrhydro_cpu+=element->SealevelriseEustaticHydro(RSLgi,masks, oceanarea);
     4749        }
     4750
     4751        /*Call the sea level rise core for bottom pressures: */
     4752        this->parameters->FindParam(&bp_compute_fingerprints,DslComputeFingerprintsEnum);
     4753        if(bp_compute_fingerprints){
     4754                for(int i=0;i<elements->Size();i++){
     4755                        Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
     4756                        element->SealevelriseEustaticBottomPressure(RSLgi,masks);
     4757                }
    47404758        }
    47414759
     
    47454763
    47464764        /*Sum all eustatic components from all cpus:*/
    4747         ISSM_MPI_Reduce (&eustatic_cpu,&eustatic,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
    4748         ISSM_MPI_Bcast(&eustatic,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
    4749         _assert_(!xIsNan<IssmDouble>(eustatic));
     4765        ISSM_MPI_Reduce (&bslrice_cpu,&bslrice,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     4766        ISSM_MPI_Bcast(&bslrice,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     4767        _assert_(!xIsNan<IssmDouble>(bslrice));
     4768
     4769        ISSM_MPI_Reduce (&bslrhydro_cpu,&bslrhydro,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     4770        ISSM_MPI_Bcast(&bslrhydro,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     4771        _assert_(!xIsNan<IssmDouble>(bslrhydro));
    47504772
    47514773        /*Free ressources:*/
     
    47554777        /*Assign output pointers:*/
    47564778        *poceanarea = oceanarea;
    4757         *peustatic  = eustatic;
     4779        *pbslrice  = bslrice;
     4780        *pbslrhydro  = bslrhydro;
     4781        *pbslr=bslrhydro+bslrice;
    47584782
    47594783}
  • issm/branches/trunk-larour-SLPS2020/src/c/classes/FemModel.h

    r25361 r25534  
    164164                #endif
    165165                #ifdef _HAVE_SEALEVELRISE_
    166                 void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks);
     166                void SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, SealevelMasks* masks);
    167167                void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old,  SealevelMasks* masks,bool verboseconvolution);
    168168                void SealevelriseRotationalFeedback(Vector<IssmDouble>* pRSLgo_rot, Vector<IssmDouble>* pRSLg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, SealevelMasks* masks);
  • issm/branches/trunk-larour-SLPS2020/src/c/cores/sealevelchange_core.cpp

    r25348 r25534  
    413413        IssmDouble time;
    414414
    415         /*outputs:*/
    416         IssmDouble eustatic;
     415        /*barystatic contribution:*/
     416        IssmDouble bslr;
     417        IssmDouble bslrice;
     418        IssmDouble bslrhydro;
     419        IssmDouble cumbslr;
     420        IssmDouble cumbslrice;
     421        IssmDouble cumbslrhydro;
    417422       
    418         if(VerboseSolution()) _printf0_("         computing eustatic components on ice\n");
    419 
    420        
     423        if(VerboseSolution()) _printf0_("         computing bslr components on ice\n");
     424
    421425        /*Figure out size of g-set deflection vector and allocate solution vector: */
    422426        gsize = femmodel->nodes->NumberOfDofs(GsetEnum);
     
    425429        femmodel->parameters->FindParam(&step,StepEnum);
    426430        femmodel->parameters->FindParam(&time,TimeEnum);
     431        femmodel->parameters->FindParam(&cumbslr,CumBslrEnum);
     432        femmodel->parameters->FindParam(&cumbslrice,CumBslrIceEnum);
     433        femmodel->parameters->FindParam(&cumbslrhydro,CumBslrHydroEnum);
    427434
    428435        /*Initialize:*/
    429436        RSLgi = new Vector<IssmDouble>(gsize);
    430437
    431         /*call the eustatic main module: */
    432         femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&eustatic, masks); //this computes
     438        /*call the bslr main module: */
     439        femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&bslr, &bslrice, &bslrhydro, masks); //this computes
    433440
    434441        /*we need to average RSLgi over the ocean: RHS term  4 in Eq.4 of Farrel and clarke. Only the elements can do that: */
    435442        RSLgi_oceanaverage=femmodel->SealevelriseOceanAverage(RSLgi,masks, oceanarea);
    436443
    437         /*RSLg is the sum of the pure eustatic component (term 3) and the contribution from the perturbation to the graviation potential due to the
     444        /*RSLg is the sum of the pure bslr component (term 3) and the contribution from the perturbation to the graviation potential due to the
    438445         * presence of ice (terms 1 and 4 in Eq.4 of Farrel and Clarke):*/
    439         RSLgi->Shift(-eustatic-RSLgi_oceanaverage);
    440 
    441         /*save eustatic value for results: */
    442         femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelRSLEustaticEnum,-eustatic,step,time));
    443 
     446        RSLgi->Shift(-bslr-RSLgi_oceanaverage);
     447
     448        /*save bslr and cumulated bslr value for results:{{{ */
     449        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,BslrEnum,-bslr,step,time));
     450        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,BslrIceEnum,-bslrice,step,time));
     451        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,BslrHydroEnum,-bslrhydro,step,time));
     452
     453        cumbslr=cumbslr-bslr;
     454        cumbslrice=cumbslrice-bslrice;
     455        cumbslrhydro=cumbslrhydro-bslrhydro;
     456        femmodel->parameters->SetParam(cumbslr,CumBslrEnum);
     457        femmodel->parameters->SetParam(cumbslrice,CumBslrIceEnum);
     458        femmodel->parameters->SetParam(cumbslrhydro,CumBslrHydroEnum);
     459
     460        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumBslrEnum,cumbslr,step,time));
     461        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumBslrIceEnum,cumbslrice,step,time));
     462        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumBslrHydroEnum,cumbslrhydro,step,time));
     463        /*}}}*/
     464       
    444465        /*Assign output pointers and return: */
    445466        *poceanarea=oceanarea;
     
    468489        IssmDouble           eps_rel;
    469490        IssmDouble           eps_abs;
    470         IssmDouble           eustatic;
    471491        IssmDouble                      Ixz, Iyz, Izz;
    472492       
  • issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/Enum.vim

    r25479 r25534  
    112112syn keyword cConstant ControlInputSizeNEnum
    113113syn keyword cConstant ControlInputInterpolationEnum
     114syn keyword cConstant CumBslrEnum
     115syn keyword cConstant CumBslrIceEnum
     116syn keyword cConstant CumBslrHydroEnum
    114117syn keyword cConstant DamageC1Enum
    115118syn keyword cConstant DamageC2Enum
     
    315318syn keyword cConstant SolidearthPlanetRadiusEnum
    316319syn keyword cConstant SolidearthPlanetAreaEnum
    317 syn keyword cConstant SealevelEustaticEnum
    318320syn keyword cConstant SolidearthSettingsAbstolEnum
    319321syn keyword cConstant RotationalAngularVelocityEnum
     
    690692syn keyword cConstant SealevelNEsaRateEnum
    691693syn keyword cConstant SealevelRSLEnum
     694syn keyword cConstant BslrEnum
     695syn keyword cConstant BslrIceEnum
     696syn keyword cConstant BslrHydroEnum
     697syn keyword cConstant BslrRateEnum
    692698syn keyword cConstant SealevelRSLEustaticEnum
    693 syn keyword cConstant SealevelRSLEustaticRateEnum
    694699syn keyword cConstant SealevelRSLRateEnum
    695700syn keyword cConstant SealevelUEastEsaEnum
  • issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/EnumDefinitions.h

    r25479 r25534  
    106106        ControlInputSizeNEnum,
    107107        ControlInputInterpolationEnum,
     108        CumBslrEnum,
     109        CumBslrIceEnum,
     110        CumBslrHydroEnum,
    108111        DamageC1Enum,
    109112        DamageC2Enum,
     
    309312        SolidearthPlanetRadiusEnum,
    310313        SolidearthPlanetAreaEnum,
    311         SealevelEustaticEnum,
    312314        SolidearthSettingsAbstolEnum,
    313315        RotationalAngularVelocityEnum,
     
    686688        SealevelNEsaRateEnum,
    687689        SealevelRSLEnum,
     690        BslrEnum,
     691        BslrIceEnum,
     692        BslrHydroEnum,
     693        BslrRateEnum,
    688694        SealevelRSLEustaticEnum,
    689         SealevelRSLEustaticRateEnum,
    690695        SealevelRSLRateEnum,
    691696        SealevelUEastEsaEnum,
  • issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/EnumToStringx.cpp

    r25479 r25534  
    114114                case ControlInputSizeNEnum : return "ControlInputSizeN";
    115115                case ControlInputInterpolationEnum : return "ControlInputInterpolation";
     116                case CumBslrEnum : return "CumBslr";
     117                case CumBslrIceEnum : return "CumBslrIce";
     118                case CumBslrHydroEnum : return "CumBslrHydro";
    116119                case DamageC1Enum : return "DamageC1";
    117120                case DamageC2Enum : return "DamageC2";
     
    317320                case SolidearthPlanetRadiusEnum : return "SolidearthPlanetRadius";
    318321                case SolidearthPlanetAreaEnum : return "SolidearthPlanetArea";
    319                 case SealevelEustaticEnum : return "SealevelEustatic";
    320322                case SolidearthSettingsAbstolEnum : return "SolidearthSettingsAbstol";
    321323                case RotationalAngularVelocityEnum : return "RotationalAngularVelocity";
     
    692694                case SealevelNEsaRateEnum : return "SealevelNEsaRate";
    693695                case SealevelRSLEnum : return "SealevelRSL";
     696                case BslrEnum : return "Bslr";
     697                case BslrIceEnum : return "BslrIce";
     698                case BslrHydroEnum : return "BslrHydro";
     699                case BslrRateEnum : return "BslrRate";
    694700                case SealevelRSLEustaticEnum : return "SealevelRSLEustatic";
    695                 case SealevelRSLEustaticRateEnum : return "SealevelRSLEustaticRate";
    696701                case SealevelRSLRateEnum : return "SealevelRSLRate";
    697702                case SealevelUEastEsaEnum : return "SealevelUEastEsa";
  • issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/StringToEnumx.cpp

    r25479 r25534  
    114114              else if (strcmp(name,"ControlInputSizeN")==0) return ControlInputSizeNEnum;
    115115              else if (strcmp(name,"ControlInputInterpolation")==0) return ControlInputInterpolationEnum;
     116              else if (strcmp(name,"CumBslr")==0) return CumBslrEnum;
     117              else if (strcmp(name,"CumBslrIce")==0) return CumBslrIceEnum;
     118              else if (strcmp(name,"CumBslrHydro")==0) return CumBslrHydroEnum;
    116119              else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
    117120              else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
     
    134137              else if (strcmp(name,"DslModel")==0) return DslModelEnum;
    135138              else if (strcmp(name,"DslModelid")==0) return DslModelidEnum;
    136               else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum;
    137               else if (strcmp(name,"DslComputeFingerprints")==0) return DslComputeFingerprintsEnum;
    138               else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"EplZigZagCounter")==0) return EplZigZagCounterEnum;
     142              if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum;
     143              else if (strcmp(name,"DslComputeFingerprints")==0) return DslComputeFingerprintsEnum;
     144              else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
     145              else if (strcmp(name,"EplZigZagCounter")==0) return EplZigZagCounterEnum;
    143146              else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
    144147              else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;
     
    257260              else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
    258261              else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
    259               else if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum;
    260               else if (strcmp(name,"MasstransportMinThickness")==0) return MasstransportMinThicknessEnum;
    261               else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum;
     265              if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum;
     266              else if (strcmp(name,"MasstransportMinThickness")==0) return MasstransportMinThicknessEnum;
     267              else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum;
     268              else if (strcmp(name,"MasstransportPenaltyFactor")==0) return MasstransportPenaltyFactorEnum;
    266269              else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum;
    267270              else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;
     
    323326              else if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum;
    324327              else if (strcmp(name,"SolidearthPlanetArea")==0) return SolidearthPlanetAreaEnum;
    325               else if (strcmp(name,"SealevelEustatic")==0) return SealevelEustaticEnum;
    326328              else if (strcmp(name,"SolidearthSettingsAbstol")==0) return SolidearthSettingsAbstolEnum;
    327329              else if (strcmp(name,"RotationalAngularVelocity")==0) return RotationalAngularVelocityEnum;
     
    381383              else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum;
    382384              else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum;
    383               else if (strcmp(name,"SmbIsclimatology")==0) return SmbIsclimatologyEnum;
    384               else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
     388              if (strcmp(name,"SmbIsclimatology")==0) return SmbIsclimatologyEnum;
     389              else if (strcmp(name,"SmbIsconstrainsurfaceT")==0) return SmbIsconstrainsurfaceTEnum;
     390              else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
    389391              else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
    390392              else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
     
    504506              else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum;
    505507              else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum;
    506               else if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum;
    507               else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum;
     511              if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum;
     512              else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum;
     513              else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum;
    512514              else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum;
    513515              else if (strcmp(name,"BasalforcingsPicoOverturningCoeff")==0) return BasalforcingsPicoOverturningCoeffEnum;
     
    627629              else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
    628630              else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
    629               else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum;
    630               else if (strcmp(name,"HydrologydcEplThicknessSubstep")==0) return HydrologydcEplThicknessSubstepEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"HydrologydcEplThicknessTransient")==0) return HydrologydcEplThicknessTransientEnum;
     634              if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum;
     635              else if (strcmp(name,"HydrologydcEplThicknessSubstep")==0) return HydrologydcEplThicknessSubstepEnum;
     636              else if (strcmp(name,"HydrologydcEplThicknessTransient")==0) return HydrologydcEplThicknessTransientEnum;
    635637              else if (strcmp(name,"HydrologydcMaskEplactiveElt")==0) return HydrologydcMaskEplactiveEltEnum;
    636638              else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum;
     
    707709              else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum;
    708710              else if (strcmp(name,"SealevelRSL")==0) return SealevelRSLEnum;
     711              else if (strcmp(name,"Bslr")==0) return BslrEnum;
     712              else if (strcmp(name,"BslrIce")==0) return BslrIceEnum;
     713              else if (strcmp(name,"BslrHydro")==0) return BslrHydroEnum;
     714              else if (strcmp(name,"BslrRate")==0) return BslrRateEnum;
    709715              else if (strcmp(name,"SealevelRSLEustatic")==0) return SealevelRSLEustaticEnum;
    710               else if (strcmp(name,"SealevelRSLEustaticRate")==0) return SealevelRSLEustaticRateEnum;
    711716              else if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum;
    712717              else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum;
     
    747752              else if (strcmp(name,"SmbDailydsradiation")==0) return SmbDailydsradiationEnum;
    748753              else if (strcmp(name,"SmbDailypressure")==0) return SmbDailypressureEnum;
    749               else if (strcmp(name,"SmbDailyrainfall")==0) return SmbDailyrainfallEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"SmbDailyrainfall")==0) return SmbDailyrainfallEnum;
    750758              else if (strcmp(name,"SmbDailysnowfall")==0) return SmbDailysnowfallEnum;
    751759              else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum;
    752760              else if (strcmp(name,"SmbDailywindspeed")==0) return SmbDailywindspeedEnum;
    753761              else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
     762              else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
    758763              else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
    759764              else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
     
    870875              else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
    871876              else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
    872               else if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"ThicknessOld")==0) return ThicknessOldEnum;
    873881              else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
    874882              else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
    875883              else if (strcmp(name,"Vel")==0) return VelEnum;
    876884              else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"Vx")==0) return VxEnum;
     885              else if (strcmp(name,"Vx")==0) return VxEnum;
    881886              else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
    882887              else if (strcmp(name,"VxObs")==0) return VxObsEnum;
     
    993998              else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
    994999              else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
    995               else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
    9961004              else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
    9971005              else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
    9981006              else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
    9991007              else if (strcmp(name,"InputsEND")==0) return InputsENDEnum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
     1008              else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
    10041009              else if (strcmp(name,"AdaptiveTimestepping")==0) return AdaptiveTimesteppingEnum;
    10051010              else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
     
    11161121              else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
    11171122              else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
    1118               else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
    11191127              else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
    11201128              else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
    11211129              else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
    11221130              else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
     1131              else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
    11271132              else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
    11281133              else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
     
    12391244              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    12401245              else if (strcmp(name,"None")==0) return NoneEnum;
    1241               else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
     1246         else stage=11;
     1247   }
     1248   if(stage==11){
     1249              if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
    12421250              else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum;
    12431251              else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum;
    12441252              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    12451253              else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
    1246          else stage=11;
    1247    }
    1248    if(stage==11){
    1249               if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum;
     1254              else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum;
    12501255              else if (strcmp(name,"Open")==0) return OpenEnum;
    12511256              else if (strcmp(name,"Option")==0) return OptionEnum;
     
    13621367              else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
    13631368              else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
    1364               else if (strcmp(name,"Vertex")==0) return VertexEnum;
     1369         else stage=12;
     1370   }
     1371   if(stage==12){
     1372              if (strcmp(name,"Vertex")==0) return VertexEnum;
    13651373              else if (strcmp(name,"VertexLId")==0) return VertexLIdEnum;
    13661374              else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum;
    13671375              else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum;
    13681376              else if (strcmp(name,"Vertices")==0) return VerticesEnum;
    1369          else stage=12;
    1370    }
    1371    if(stage==12){
    1372               if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
     1377              else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
    13731378              else if (strcmp(name,"Water")==0) return WaterEnum;
    13741379              else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum;
Note: See TracChangeset for help on using the changeset viewer.