Changeset 25534
- Timestamp:
- 09/04/20 16:30:07 (5 years ago)
- 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 201 201 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.settings.computesealevelchange",SolidearthSettingsComputesealevelchangeEnum)); 202 202 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)); 203 206 204 207 /*compute planet area and plug into parameters:*/ -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Element.h
r25318 r25534 378 378 virtual IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks)=0; 379 379 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; 381 383 virtual void SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0; 382 384 virtual void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0; -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Penta.h
r25318 r25534 216 216 void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 217 217 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!");}; 219 221 void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 220 222 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 173 173 void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");}; 174 174 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!");}; 176 178 void SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 177 179 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 179 179 void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 180 180 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!");}; 182 184 void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; 183 185 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 5654 5654 } 5655 5655 /*}}}*/ 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){ /*{{{*/ 5656 IssmDouble Tria::SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/ 5674 5657 5675 5658 /*diverse:*/ … … 5681 5664 bool scaleoceanarea= false; 5682 5665 5666 /*output: */ 5667 IssmDouble bslrice=0; 5668 5683 5669 /*elastic green function:*/ 5684 5670 IssmDouble* G=NULL; … … 5689 5675 /*constants:*/ 5690 5676 IssmDouble constant=0; 5691 5692 /*Initialize eustatic component: do not skip this step :):*/5693 IssmDouble eustatic = 0.;5694 5677 5695 5678 /*early return if we are not on an ice cap:*/ … … 5698 5681 constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum); 5699 5682 #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; 5702 5685 } 5703 5686 … … 5708 5691 this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum); 5709 5692 #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; 5712 5695 } 5713 5696 … … 5774 5757 /*}}}*/ 5775 5758 5776 /*Compute eustatic component:*/5759 /*Compute barystatic contribution:*/ 5777 5760 _assert_(oceanarea>0.); 5778 5761 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)); 5780 5764 5781 5765 /*convert from m to kg/m^2:*/ … … 5785 5769 for(int i=0;i<gsize;i++) Sgi[i]+=G[i]*I; 5786 5770 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 /*}}}*/ 5775 IssmDouble Tria::SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/ 5794 5776 5795 5777 /*diverse:*/ 5796 5778 int gsize; 5797 5779 IssmDouble area; 5798 IssmDouble phi=1.0; //WARNING: do not touch this, default is entire elemnt contributes eustatic5780 IssmDouble phi=1.0; //WARNING: do not touch this, default is entire elemnt contributes barystatic 5799 5781 IssmDouble W; //change in water height thickness (Farrel and Clarke, Equ. 4) 5800 5782 bool notfullygrounded=false; … … 5808 5790 IssmDouble rho_freshwater; 5809 5791 5810 5811 /*Initialize eustatic component: grab from the previous eustatic core!:*/ 5812 IssmDouble eustatic = *peustatic; 5792 /*output:*/ 5793 IssmDouble bslrhydro = 0; 5813 5794 5814 5795 /*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 } 5816 5800 5817 5801 /*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 } 5819 5806 5820 5807 /*If we are here, we are on earth, not on ice: */ … … 5838 5825 deltathickness_input->GetInputAverage(&W); 5839 5826 5840 /*Compute eustatic component:*/5827 /*Compute barystatic component:*/ 5841 5828 _assert_(oceanarea>0.); 5842 5829 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)); 5844 5832 5845 5833 /*convert from m to kg/m^2:*/ … … 5849 5837 for(int i=0;i<gsize;i++) Sgi[i]+=G[i]*W; 5850 5838 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 /*}}}*/ 5843 void Tria::SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){ /*{{{*/ 5858 5844 5859 5845 /*diverse:*/ -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tria.h
r25318 r25534 166 166 void SetSealevelMasks(SealevelMasks* masks); 167 167 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); 172 171 void SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks); 173 172 void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks); -
issm/branches/trunk-larour-SLPS2020/src/c/classes/FemModel.cpp
r25361 r25534 4706 4706 #endif 4707 4707 #ifdef _HAVE_SEALEVELRISE_ 4708 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* p eustatic, SealevelMasks* masks) { /*{{{*/4708 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, SealevelMasks* masks) { /*{{{*/ 4709 4709 4710 4710 /*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.; 4714 4715 IssmDouble area = 0.; 4715 4716 IssmDouble oceanarea = 0.; 4716 4717 IssmDouble oceanarea_cpu = 0.; 4718 int bp_compute_fingerprints= 0; 4717 4719 4718 4720 /*Initialize temporary vector that will be used to sum eustatic components … … 4733 4735 _assert_(oceanarea>0.); 4734 4736 4735 /*Call the sea level rise core: */ 4737 /*Call the sea level rise core for ice : */ 4738 bslrice_cpu=0; 4736 4739 for(int i=0;i<elements->Size();i++){ 4737 4740 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 } 4740 4758 } 4741 4759 … … 4745 4763 4746 4764 /*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)); 4750 4772 4751 4773 /*Free ressources:*/ … … 4755 4777 /*Assign output pointers:*/ 4756 4778 *poceanarea = oceanarea; 4757 *peustatic = eustatic; 4779 *pbslrice = bslrice; 4780 *pbslrhydro = bslrhydro; 4781 *pbslr=bslrhydro+bslrice; 4758 4782 4759 4783 } -
issm/branches/trunk-larour-SLPS2020/src/c/classes/FemModel.h
r25361 r25534 164 164 #endif 165 165 #ifdef _HAVE_SEALEVELRISE_ 166 void SealevelriseEustatic(Vector<IssmDouble>* p Sgi, IssmDouble* poceanarea, IssmDouble* peustatic, SealevelMasks* masks);166 void SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, SealevelMasks* masks); 167 167 void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, SealevelMasks* masks,bool verboseconvolution); 168 168 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 413 413 IssmDouble time; 414 414 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; 417 422 418 if(VerboseSolution()) _printf0_(" computing eustatic components on ice\n"); 419 420 423 if(VerboseSolution()) _printf0_(" computing bslr components on ice\n"); 424 421 425 /*Figure out size of g-set deflection vector and allocate solution vector: */ 422 426 gsize = femmodel->nodes->NumberOfDofs(GsetEnum); … … 425 429 femmodel->parameters->FindParam(&step,StepEnum); 426 430 femmodel->parameters->FindParam(&time,TimeEnum); 431 femmodel->parameters->FindParam(&cumbslr,CumBslrEnum); 432 femmodel->parameters->FindParam(&cumbslrice,CumBslrIceEnum); 433 femmodel->parameters->FindParam(&cumbslrhydro,CumBslrHydroEnum); 427 434 428 435 /*Initialize:*/ 429 436 RSLgi = new Vector<IssmDouble>(gsize); 430 437 431 /*call the eustaticmain module: */432 femmodel->SealevelriseEustatic(RSLgi,&oceanarea,& eustatic, masks); //this computes438 /*call the bslr main module: */ 439 femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&bslr, &bslrice, &bslrhydro, masks); //this computes 433 440 434 441 /*we need to average RSLgi over the ocean: RHS term 4 in Eq.4 of Farrel and clarke. Only the elements can do that: */ 435 442 RSLgi_oceanaverage=femmodel->SealevelriseOceanAverage(RSLgi,masks, oceanarea); 436 443 437 /*RSLg is the sum of the pure eustaticcomponent (term 3) and the contribution from the perturbation to the graviation potential due to the444 /*RSLg is the sum of the pure bslr component (term 3) and the contribution from the perturbation to the graviation potential due to the 438 445 * 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 444 465 /*Assign output pointers and return: */ 445 466 *poceanarea=oceanarea; … … 468 489 IssmDouble eps_rel; 469 490 IssmDouble eps_abs; 470 IssmDouble eustatic;471 491 IssmDouble Ixz, Iyz, Izz; 472 492 -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/Enum.vim
r25479 r25534 112 112 syn keyword cConstant ControlInputSizeNEnum 113 113 syn keyword cConstant ControlInputInterpolationEnum 114 syn keyword cConstant CumBslrEnum 115 syn keyword cConstant CumBslrIceEnum 116 syn keyword cConstant CumBslrHydroEnum 114 117 syn keyword cConstant DamageC1Enum 115 118 syn keyword cConstant DamageC2Enum … … 315 318 syn keyword cConstant SolidearthPlanetRadiusEnum 316 319 syn keyword cConstant SolidearthPlanetAreaEnum 317 syn keyword cConstant SealevelEustaticEnum318 320 syn keyword cConstant SolidearthSettingsAbstolEnum 319 321 syn keyword cConstant RotationalAngularVelocityEnum … … 690 692 syn keyword cConstant SealevelNEsaRateEnum 691 693 syn keyword cConstant SealevelRSLEnum 694 syn keyword cConstant BslrEnum 695 syn keyword cConstant BslrIceEnum 696 syn keyword cConstant BslrHydroEnum 697 syn keyword cConstant BslrRateEnum 692 698 syn keyword cConstant SealevelRSLEustaticEnum 693 syn keyword cConstant SealevelRSLEustaticRateEnum694 699 syn keyword cConstant SealevelRSLRateEnum 695 700 syn keyword cConstant SealevelUEastEsaEnum -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/EnumDefinitions.h
r25479 r25534 106 106 ControlInputSizeNEnum, 107 107 ControlInputInterpolationEnum, 108 CumBslrEnum, 109 CumBslrIceEnum, 110 CumBslrHydroEnum, 108 111 DamageC1Enum, 109 112 DamageC2Enum, … … 309 312 SolidearthPlanetRadiusEnum, 310 313 SolidearthPlanetAreaEnum, 311 SealevelEustaticEnum,312 314 SolidearthSettingsAbstolEnum, 313 315 RotationalAngularVelocityEnum, … … 686 688 SealevelNEsaRateEnum, 687 689 SealevelRSLEnum, 690 BslrEnum, 691 BslrIceEnum, 692 BslrHydroEnum, 693 BslrRateEnum, 688 694 SealevelRSLEustaticEnum, 689 SealevelRSLEustaticRateEnum,690 695 SealevelRSLRateEnum, 691 696 SealevelUEastEsaEnum, -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/EnumToStringx.cpp
r25479 r25534 114 114 case ControlInputSizeNEnum : return "ControlInputSizeN"; 115 115 case ControlInputInterpolationEnum : return "ControlInputInterpolation"; 116 case CumBslrEnum : return "CumBslr"; 117 case CumBslrIceEnum : return "CumBslrIce"; 118 case CumBslrHydroEnum : return "CumBslrHydro"; 116 119 case DamageC1Enum : return "DamageC1"; 117 120 case DamageC2Enum : return "DamageC2"; … … 317 320 case SolidearthPlanetRadiusEnum : return "SolidearthPlanetRadius"; 318 321 case SolidearthPlanetAreaEnum : return "SolidearthPlanetArea"; 319 case SealevelEustaticEnum : return "SealevelEustatic";320 322 case SolidearthSettingsAbstolEnum : return "SolidearthSettingsAbstol"; 321 323 case RotationalAngularVelocityEnum : return "RotationalAngularVelocity"; … … 692 694 case SealevelNEsaRateEnum : return "SealevelNEsaRate"; 693 695 case SealevelRSLEnum : return "SealevelRSL"; 696 case BslrEnum : return "Bslr"; 697 case BslrIceEnum : return "BslrIce"; 698 case BslrHydroEnum : return "BslrHydro"; 699 case BslrRateEnum : return "BslrRate"; 694 700 case SealevelRSLEustaticEnum : return "SealevelRSLEustatic"; 695 case SealevelRSLEustaticRateEnum : return "SealevelRSLEustaticRate";696 701 case SealevelRSLRateEnum : return "SealevelRSLRate"; 697 702 case SealevelUEastEsaEnum : return "SealevelUEastEsa"; -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/StringToEnumx.cpp
r25479 r25534 114 114 else if (strcmp(name,"ControlInputSizeN")==0) return ControlInputSizeNEnum; 115 115 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; 116 119 else if (strcmp(name,"DamageC1")==0) return DamageC1Enum; 117 120 else if (strcmp(name,"DamageC2")==0) return DamageC2Enum; … … 134 137 else if (strcmp(name,"DslModel")==0) return DslModelEnum; 135 138 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;139 139 else stage=2; 140 140 } 141 141 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; 143 146 else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum; 144 147 else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum; … … 257 260 else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 258 261 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;262 262 else stage=3; 263 263 } 264 264 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; 266 269 else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum; 267 270 else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum; … … 323 326 else if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum; 324 327 else if (strcmp(name,"SolidearthPlanetArea")==0) return SolidearthPlanetAreaEnum; 325 else if (strcmp(name,"SealevelEustatic")==0) return SealevelEustaticEnum;326 328 else if (strcmp(name,"SolidearthSettingsAbstol")==0) return SolidearthSettingsAbstolEnum; 327 329 else if (strcmp(name,"RotationalAngularVelocity")==0) return RotationalAngularVelocityEnum; … … 381 383 else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum; 382 384 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;385 385 else stage=4; 386 386 } 387 387 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; 389 391 else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum; 390 392 else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum; … … 504 506 else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum; 505 507 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;508 508 else stage=5; 509 509 } 510 510 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; 512 514 else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum; 513 515 else if (strcmp(name,"BasalforcingsPicoOverturningCoeff")==0) return BasalforcingsPicoOverturningCoeffEnum; … … 627 629 else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum; 628 630 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;631 631 else stage=6; 632 632 } 633 633 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; 635 637 else if (strcmp(name,"HydrologydcMaskEplactiveElt")==0) return HydrologydcMaskEplactiveEltEnum; 636 638 else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum; … … 707 709 else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum; 708 710 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; 709 715 else if (strcmp(name,"SealevelRSLEustatic")==0) return SealevelRSLEustaticEnum; 710 else if (strcmp(name,"SealevelRSLEustaticRate")==0) return SealevelRSLEustaticRateEnum;711 716 else if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum; 712 717 else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum; … … 747 752 else if (strcmp(name,"SmbDailydsradiation")==0) return SmbDailydsradiationEnum; 748 753 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; 750 758 else if (strcmp(name,"SmbDailysnowfall")==0) return SmbDailysnowfallEnum; 751 759 else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum; 752 760 else if (strcmp(name,"SmbDailywindspeed")==0) return SmbDailywindspeedEnum; 753 761 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; 758 763 else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum; 759 764 else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum; … … 870 875 else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum; 871 876 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; 873 881 else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum; 874 882 else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum; 875 883 else if (strcmp(name,"Vel")==0) return VelEnum; 876 884 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; 881 886 else if (strcmp(name,"VxMesh")==0) return VxMeshEnum; 882 887 else if (strcmp(name,"VxObs")==0) return VxObsEnum; … … 993 998 else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum; 994 999 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; 996 1004 else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum; 997 1005 else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum; 998 1006 else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum; 999 1007 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; 1004 1009 else if (strcmp(name,"AdaptiveTimestepping")==0) return AdaptiveTimesteppingEnum; 1005 1010 else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum; … … 1116 1121 else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum; 1117 1122 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; 1119 1127 else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum; 1120 1128 else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum; 1121 1129 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; 1122 1130 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; 1127 1132 else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum; 1128 1133 else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum; … … 1239 1244 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 1240 1245 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; 1242 1250 else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum; 1243 1251 else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum; 1244 1252 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 1245 1253 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; 1250 1255 else if (strcmp(name,"Open")==0) return OpenEnum; 1251 1256 else if (strcmp(name,"Option")==0) return OptionEnum; … … 1362 1367 else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum; 1363 1368 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; 1365 1373 else if (strcmp(name,"VertexLId")==0) return VertexLIdEnum; 1366 1374 else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 1367 1375 else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum; 1368 1376 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; 1373 1378 else if (strcmp(name,"Water")==0) return WaterEnum; 1374 1379 else if (strcmp(name,"XTaylorHood")==0) return XTaylorHoodEnum;
Note:
See TracChangeset
for help on using the changeset viewer.