Changeset 25742
- Timestamp:
- 11/10/20 09:22:05 (4 years ago)
- Location:
- issm/branches/trunk-larour-SLPS2020/src
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-larour-SLPS2020/src/c/analyses/SealevelriseAnalysis.cpp
r25724 r25742 185 185 int *transitions_N = NULL; 186 186 int ntransitions; 187 IssmDouble* partitionice=NULL; 188 IssmDouble* partitionhydro=NULL; 189 IssmDouble* bslrice_partition=NULL; 190 IssmDouble* bslrhydro_partition=NULL; 191 int npartice,nparthydro,nel; 192 187 193 188 194 /*some constant parameters: */ … … 212 218 planetarea=4*PI*planetradius*planetradius; 213 219 parameters->AddObject(new DoubleParam(SolidearthPlanetAreaEnum,planetarea)); 220 221 /*Deal with partition of the barystatic contribution:*/ 222 iomodel->FetchData(&npartice,"md.solidearth.npartice"); 223 parameters->AddObject(new IntParam(SolidearthNpartIceEnum,npartice)); 224 if(npartice){ 225 iomodel->FetchData(&partitionice,&nel,NULL,"md.solidearth.partitionice"); 226 parameters->AddObject(new DoubleMatParam(SolidearthPartitionIceEnum,partitionice,nel,1)); 227 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.npartice",SolidearthNpartIceEnum)); 228 bslrice_partition=xNewZeroInit<IssmDouble>(npartice); 229 parameters->AddObject(new DoubleMatParam(CumBslrIcePartitionEnum,bslrice_partition,npartice,1)); 230 xDelete<IssmDouble>(partitionice); 231 } 232 iomodel->FetchData(&nparthydro,"md.solidearth.nparthydro"); 233 parameters->AddObject(new IntParam(SolidearthNpartHydroEnum,nparthydro)); 234 if(nparthydro){ 235 iomodel->FetchData(&partitionhydro,&nel,NULL,"md.solidearth.partitionhydro"); 236 parameters->AddObject(new DoubleMatParam(SolidearthPartitionHydroEnum,partitionhydro,nel,1)); 237 parameters->AddObject(iomodel->CopyConstantObject("md.solidearth.nparthydro",SolidearthNpartHydroEnum)); 238 bslrhydro_partition=xNewZeroInit<IssmDouble>(nparthydro); 239 parameters->AddObject(new DoubleMatParam(CumBslrHydroPartitionEnum,bslrhydro_partition,nparthydro,1)); 240 xDelete<IssmDouble>(partitionhydro); 241 } 242 214 243 215 244 /*Deal with dsl multi-model ensembles: {{{*/ -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Element.h
r25534 r25742 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 IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea)=0;381 virtual IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea)=0;380 virtual IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution,IssmDouble* partition,IssmDouble oceanarea)=0; 381 virtual IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea)=0; 382 382 virtual void SealevelriseEustaticBottomPressure(IssmDouble* Sgi, SealevelMasks* masks)=0; 383 383 virtual void SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0; -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Penta.h
r25534 r25742 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 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!");};218 IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 219 IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; 220 220 void SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");}; 221 221 void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Seg.h
r25534 r25742 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 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!");};175 IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 176 IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; 177 177 void SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");}; 178 178 void SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tetra.h
r25534 r25742 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 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!");};181 IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){_error_("not implemented yet!");}; 182 IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea){_error_("not implemented yet!");}; 183 183 void SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks){_error_("not implemented yet!");}; 184 184 void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");}; -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tria.cpp
r25724 r25742 5655 5655 } 5656 5656 /*}}}*/ 5657 IssmDouble Tria::SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/5657 IssmDouble Tria::SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/ 5658 5658 5659 5659 /*diverse:*/ … … 5726 5726 5727 5727 phi=this->GetGroundedPortion(&xyz_list[0][0]); //watch out, this only works because of the Thales theorem! We are in 3D, but this routine is inherently for 2D trias 5728 if(glfraction==0)phi=1; 5728 5729 #ifdef _ISSM_DEBUG_ 5729 5730 this->AddInput2(SealevelEustaticMaskEnum,&phi,P0Enum); 5730 5731 #endif 5731 if(glfraction==0)phi=1;5732 5732 } 5733 5733 else phi=1.0; … … 5779 5779 } 5780 5780 5781 /*Plug bslrice into barystatic contribution vector:*/ 5782 if(barystatic_contribution){ 5783 id=partition[this->Sid()]+1; 5784 barystatic_contribution->SetValue(id,bslrice,ADD_VAL); 5785 } 5786 5781 5787 /*return :*/ 5782 5788 return bslrice; 5783 5789 } 5784 5790 /*}}}*/ 5785 IssmDouble Tria::SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea){ /*{{{*/5791 IssmDouble Tria::SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea){ /*{{{*/ 5786 5792 5787 5793 /*diverse:*/ … … 5847 5853 /*convolve:*/ 5848 5854 for(int i=0;i<gsize;i++) Sgi[i]+=G[i]*W; 5855 } 5856 5857 /*Plug bslrice into barystatic contribution vector:*/ 5858 if(barystatic_contribution){ 5859 id=partition[this->Sid()]+1; 5860 barystatic_contribution->SetValue(id,bslrhydro,ADD_VAL); 5849 5861 } 5850 5862 -
issm/branches/trunk-larour-SLPS2020/src/c/classes/Elements/Tria.h
r25534 r25742 166 166 void SetSealevelMasks(SealevelMasks* masks); 167 167 void SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz); 168 IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea);169 IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, IssmDouble oceanarea);168 IssmDouble SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea); 169 IssmDouble SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks, Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition,IssmDouble oceanarea); 170 170 void SealevelriseEustaticBottomPressure(IssmDouble* Sgi,SealevelMasks* masks); 171 171 void SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks); -
issm/branches/trunk-larour-SLPS2020/src/c/classes/FemModel.cpp
r25596 r25742 4708 4708 #endif 4709 4709 #ifdef _HAVE_SEALEVELRISE_ 4710 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, SealevelMasks* masks) { /*{{{*/4710 void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, IssmDouble** pbslrice_partition,IssmDouble** pbslrhydro_partition,SealevelMasks* masks) { /*{{{*/ 4711 4711 4712 4712 /*serialized vectors:*/ … … 4719 4719 IssmDouble oceanarea_cpu = 0.; 4720 4720 int bp_compute_fingerprints= 0; 4721 4722 Vector<IssmDouble>* bslrice_partition=NULL; 4723 IssmDouble* bslrice_partition_serial=NULL; 4724 IssmDouble* partitionice=NULL; 4725 int npartice,nel; 4726 4727 Vector<IssmDouble>* bslrhydro_partition=NULL; 4728 IssmDouble* bslrhydro_partition_serial=NULL; 4729 IssmDouble* partitionhydro=NULL; 4730 int nparthydro; 4731 4721 4732 4722 4733 /*Initialize temporary vector that will be used to sum eustatic components … … 4737 4748 _assert_(oceanarea>0.); 4738 4749 4750 /*Initialize partition vectors to retrieve barystatic contributions: */ 4751 this->parameters->FindParam(&npartice,SolidearthNpartIceEnum); 4752 if(npartice){ 4753 this->parameters->FindParam(&partitionice,&nel,NULL,SolidearthPartitionIceEnum); 4754 bslrice_partition= new Vector<IssmDouble>(npartice); 4755 } 4756 4757 this->parameters->FindParam(&nparthydro,SolidearthNpartHydroEnum); 4758 if(nparthydro){ 4759 this->parameters->FindParam(&partitionhydro,&nel,NULL,SolidearthPartitionHydroEnum); 4760 bslrhydro_partition= new Vector<IssmDouble>(nparthydro); 4761 } 4762 4763 4739 4764 /*Call the sea level rise core for ice : */ 4740 4765 bslrice_cpu=0; 4741 4766 for(int i=0;i<elements->Size();i++){ 4742 4767 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 4743 bslrice_cpu+=element->SealevelriseEustaticIce(RSLgi,masks, oceanarea); 4744 } 4745 4768 bslrice_cpu+=element->SealevelriseEustaticIce(RSLgi,masks, bslrice_partition,partitionice,oceanarea); 4769 } 4770 4771 4746 4772 /*Call the sea level rise core for hydro: */ 4747 4773 bslrhydro_cpu=0; 4748 4774 for(int i=0;i<elements->Size();i++){ 4749 4775 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 4750 bslrhydro_cpu+=element->SealevelriseEustaticHydro(RSLgi,masks, oceanarea);4776 bslrhydro_cpu+=element->SealevelriseEustaticHydro(RSLgi,masks, bslrhydro_partition,partitionhydro,oceanarea); 4751 4777 } 4752 4778 … … 4773 4799 _assert_(!xIsNan<IssmDouble>(bslrhydro)); 4774 4800 4801 /*Take care of partition vectors:*/ 4802 if(bslrice_partition){ 4803 bslrice_partition->Assemble(); 4804 bslrice_partition_serial=bslrice_partition->ToMPISerial(); 4805 } 4806 if(bslrhydro_partition){ 4807 bslrhydro_partition->Assemble(); 4808 bslrhydro_partition_serial=bslrhydro_partition->ToMPISerial(); 4809 } 4810 4811 4775 4812 /*Free ressources:*/ 4776 4813 xDelete<int>(indices); 4777 4814 xDelete<IssmDouble>(RSLgi); 4815 if(bslrhydro_partition)delete bslrhydro_partition; 4816 if(bslrice_partition)delete bslrice_partition; 4817 if(partitionhydro)xDelete<IssmDouble>(partitionhydro); 4818 if(partitionice)xDelete<IssmDouble>(partitionice); 4778 4819 4779 4820 /*Assign output pointers:*/ … … 4782 4823 *pbslrhydro = bslrhydro; 4783 4824 *pbslr=bslrhydro+bslrice; 4825 *pbslrice_partition=bslrice_partition_serial; 4826 *pbslrhydro_partition=bslrhydro_partition_serial; 4784 4827 4785 4828 } -
issm/branches/trunk-larour-SLPS2020/src/c/classes/FemModel.h
r25596 r25742 164 164 #endif 165 165 #ifdef _HAVE_SEALEVELRISE_ 166 void SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, SealevelMasks* masks);166 void SealevelriseEustatic(Vector<IssmDouble>* pRSLgi, IssmDouble* poceanarea, IssmDouble* pbslr,IssmDouble* pbslrice, IssmDouble* pbslrhydro, IssmDouble** pbslrice_partition,IssmDouble** pbslrhydro_partition, 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
r25535 r25742 435 435 IssmDouble bslr; 436 436 IssmDouble bslrice; 437 IssmDouble* bslrice_partition=NULL; 437 438 IssmDouble bslrhydro; 439 IssmDouble* bslrhydro_partition=NULL; 438 440 IssmDouble cumbslr; 439 441 IssmDouble cumbslrice; 440 442 IssmDouble cumbslrhydro; 443 IssmDouble* cumbslrice_partition=NULL; 444 int npartice; 445 IssmDouble* cumbslrhydro_partition=NULL; 446 int nparthydro; 441 447 442 448 if(VerboseSolution()) _printf0_(" computing bslr components on ice\n"); … … 451 457 femmodel->parameters->FindParam(&cumbslrice,CumBslrIceEnum); 452 458 femmodel->parameters->FindParam(&cumbslrhydro,CumBslrHydroEnum); 459 femmodel->parameters->FindParam(&npartice,SolidearthNpartIceEnum); 460 femmodel->parameters->FindParam(&nparthydro,SolidearthNpartHydroEnum); 461 if(npartice) femmodel->parameters->FindParam(&cumbslrice_partition,&npartice,NULL,CumBslrIcePartitionEnum); 462 if(nparthydro) femmodel->parameters->FindParam(&cumbslrhydro_partition,&nparthydro,NULL,CumBslrHydroPartitionEnum); 453 463 454 464 /*Initialize:*/ … … 456 466 457 467 /*call the bslr main module: */ 458 femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&bslr, &bslrice, &bslrhydro, masks); //this computes468 femmodel->SealevelriseEustatic(RSLgi,&oceanarea,&bslr, &bslrice, &bslrhydro, &bslrice_partition, &bslrhydro_partition,masks); //this computes 459 469 460 470 /*we need to average RSLgi over the ocean: RHS term 4 in Eq.4 of Farrel and clarke. Only the elements can do that: */ … … 470 480 femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,BslrHydroEnum,-bslrhydro,step,time)); 471 481 482 //cumulative barystatic contribution: 472 483 cumbslr=cumbslr-bslr; 473 484 cumbslrice=cumbslrice-bslrice; 474 485 cumbslrhydro=cumbslrhydro-bslrhydro; 486 475 487 femmodel->parameters->SetParam(cumbslr,CumBslrEnum); 476 488 femmodel->parameters->SetParam(cumbslrice,CumBslrIceEnum); … … 480 492 femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumBslrIceEnum,cumbslrice,step,time)); 481 493 femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,CumBslrHydroEnum,cumbslrhydro,step,time)); 494 495 //cumulative barystatic contributions by partition: 496 if(npartice){ 497 for(int i=0;i<npartice;i++) cumbslrice_partition[i] -= bslrice_partition[i]; 498 femmodel->parameters->SetParam(cumbslrice_partition,npartice,1,CumBslrIcePartitionEnum); 499 femmodel->results->AddResult(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,CumBslrIcePartitionEnum,cumbslrice_partition,npartice,1,step,time)); 500 } 501 502 if(nparthydro){ 503 for(int i=0;i<nparthydro;i++) cumbslrhydro_partition[i] -= bslrhydro_partition[i]; 504 femmodel->parameters->SetParam(cumbslrhydro_partition,nparthydro,1,CumBslrHydroPartitionEnum); 505 femmodel->results->AddResult(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,CumBslrHydroPartitionEnum,cumbslrhydro_partition,nparthydro,1,step,time)); 506 } 482 507 /*}}}*/ 483 508 -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/Enum.vim
r25724 r25742 115 115 syn keyword cConstant CumBslrIceEnum 116 116 syn keyword cConstant CumBslrHydroEnum 117 syn keyword cConstant CumBslrIcePartitionEnum 118 syn keyword cConstant CumBslrHydroPartitionEnum 117 119 syn keyword cConstant CumGmtslrEnum 118 120 syn keyword cConstant CumGmslrEnum … … 325 327 syn keyword cConstant ModelnameEnum 326 328 syn keyword cConstant SaveResultsEnum 329 syn keyword cConstant SolidearthPartitionIceEnum 330 syn keyword cConstant SolidearthPartitionHydroEnum 331 syn keyword cConstant SolidearthNpartIceEnum 332 syn keyword cConstant SolidearthNpartHydroEnum 327 333 syn keyword cConstant SolidearthPlanetRadiusEnum 328 334 syn keyword cConstant SolidearthPlanetAreaEnum -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/EnumDefinitions.h
r25724 r25742 109 109 CumBslrIceEnum, 110 110 CumBslrHydroEnum, 111 CumBslrIcePartitionEnum, 112 CumBslrHydroPartitionEnum, 111 113 CumGmtslrEnum, 112 114 CumGmslrEnum, … … 319 321 ModelnameEnum, 320 322 SaveResultsEnum, 323 SolidearthPartitionIceEnum, 324 SolidearthPartitionHydroEnum, 325 SolidearthNpartIceEnum, 326 SolidearthNpartHydroEnum, 321 327 SolidearthPlanetRadiusEnum, 322 328 SolidearthPlanetAreaEnum, -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/EnumToStringx.cpp
r25724 r25742 117 117 case CumBslrIceEnum : return "CumBslrIce"; 118 118 case CumBslrHydroEnum : return "CumBslrHydro"; 119 case CumBslrIcePartitionEnum : return "CumBslrIcePartition"; 120 case CumBslrHydroPartitionEnum : return "CumBslrHydroPartition"; 119 121 case CumGmtslrEnum : return "CumGmtslr"; 120 122 case CumGmslrEnum : return "CumGmslr"; … … 327 329 case ModelnameEnum : return "Modelname"; 328 330 case SaveResultsEnum : return "SaveResults"; 331 case SolidearthPartitionIceEnum : return "SolidearthPartitionIce"; 332 case SolidearthPartitionHydroEnum : return "SolidearthPartitionHydro"; 333 case SolidearthNpartIceEnum : return "SolidearthNpartIce"; 334 case SolidearthNpartHydroEnum : return "SolidearthNpartHydro"; 329 335 case SolidearthPlanetRadiusEnum : return "SolidearthPlanetRadius"; 330 336 case SolidearthPlanetAreaEnum : return "SolidearthPlanetArea"; -
issm/branches/trunk-larour-SLPS2020/src/c/shared/Enum/StringToEnumx.cpp
r25724 r25742 117 117 else if (strcmp(name,"CumBslrIce")==0) return CumBslrIceEnum; 118 118 else if (strcmp(name,"CumBslrHydro")==0) return CumBslrHydroEnum; 119 else if (strcmp(name,"CumBslrIcePartition")==0) return CumBslrIcePartitionEnum; 120 else if (strcmp(name,"CumBslrHydroPartition")==0) return CumBslrHydroPartitionEnum; 119 121 else if (strcmp(name,"CumGmtslr")==0) return CumGmtslrEnum; 120 122 else if (strcmp(name,"CumGmslr")==0) return CumGmslrEnum; … … 135 137 else if (strcmp(name,"DamageStressUBound")==0) return DamageStressUBoundEnum; 136 138 else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum; 137 else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;138 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"DslModel")==0) return DslModelEnum; 142 if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum; 143 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum; 144 else if (strcmp(name,"DslModel")==0) return DslModelEnum; 143 145 else if (strcmp(name,"DslModelid")==0) return DslModelidEnum; 144 146 else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum; … … 258 260 else if (strcmp(name,"LoveR0")==0) return LoveR0Enum; 259 261 else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; 260 else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;261 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 265 if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum; 266 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; 267 else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 266 268 else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum; 267 269 else if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum; … … 333 335 else if (strcmp(name,"Modelname")==0) return ModelnameEnum; 334 336 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 337 else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum; 338 else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum; 339 else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum; 340 else if (strcmp(name,"SolidearthNpartHydro")==0) return SolidearthNpartHydroEnum; 335 341 else if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum; 336 342 else if (strcmp(name,"SolidearthPlanetArea")==0) return SolidearthPlanetAreaEnum; … … 377 383 else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum; 378 384 else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum; 379 else if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum; 380 389 else if (strcmp(name,"SmbAdThresh")==0) return SmbAdThreshEnum; 381 390 else if (strcmp(name,"SmbAveraging")==0) return SmbAveragingEnum; … … 383 392 else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum; 384 393 else if (strcmp(name,"SmbDsnowIdx")==0) return SmbDsnowIdxEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum; 394 else if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum; 389 395 else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum; 390 396 else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum; … … 500 506 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 501 507 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 502 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 503 512 else if (strcmp(name,"Air")==0) return AirEnum; 504 513 else if (strcmp(name,"Approximation")==0) return ApproximationEnum; … … 506 515 else if (strcmp(name,"BalancethicknessOmega0")==0) return BalancethicknessOmega0Enum; 507 516 else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum; 517 else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum; 512 518 else if (strcmp(name,"BasalCrevasse")==0) return BasalCrevasseEnum; 513 519 else if (strcmp(name,"BasalforcingsFloatingiceMeltingRate")==0) return BasalforcingsFloatingiceMeltingRateEnum; … … 623 629 else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum; 624 630 else if (strcmp(name,"FrontalForcingsThermalForcing")==0) return FrontalForcingsThermalForcingEnum; 625 else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; 626 635 else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum; 627 636 else if (strcmp(name,"GiaMantleViscosity")==0) return GiaMantleViscosityEnum; … … 629 638 else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum; 630 639 else if (strcmp(name,"UGia")==0) return UGiaEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"UGiaRate")==0) return UGiaRateEnum; 640 else if (strcmp(name,"UGiaRate")==0) return UGiaRateEnum; 635 641 else if (strcmp(name,"Gradient")==0) return GradientEnum; 636 642 else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum; … … 746 752 else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum; 747 753 else if (strcmp(name,"SedimentHeadStacked")==0) return SedimentHeadStackedEnum; 748 else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum; 749 758 else if (strcmp(name,"SigmaVM")==0) return SigmaVMEnum; 750 759 else if (strcmp(name,"SmbA")==0) return SmbAEnum; … … 752 761 else if (strcmp(name,"SmbAccumulation")==0) return SmbAccumulationEnum; 753 762 else if (strcmp(name,"SmbAini")==0) return SmbAiniEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum; 763 else if (strcmp(name,"SmbBMax")==0) return SmbBMaxEnum; 758 764 else if (strcmp(name,"SmbBMin")==0) return SmbBMinEnum; 759 765 else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum; … … 869 875 else if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum; 870 876 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 871 else if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum; 872 881 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 873 882 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; … … 875 884 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; 876 885 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 886 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 881 887 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 882 888 else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum; … … 992 998 else if (strcmp(name,"Outputdefinition80")==0) return Outputdefinition80Enum; 993 999 else if (strcmp(name,"Outputdefinition81")==0) return Outputdefinition81Enum; 994 else if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum; 995 1004 else if (strcmp(name,"Outputdefinition83")==0) return Outputdefinition83Enum; 996 1005 else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum; … … 998 1007 else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum; 999 1008 else if (strcmp(name,"Outputdefinition87")==0) return Outputdefinition87Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum; 1009 else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum; 1004 1010 else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum; 1005 1011 else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum; … … 1115 1121 else if (strcmp(name,"FemModel")==0) return FemModelEnum; 1116 1122 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 1117 else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum; 1118 1127 else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum; 1119 1128 else if (strcmp(name,"FloatingAreaScaled")==0) return FloatingAreaScaledEnum; … … 1121 1130 else if (strcmp(name,"Free")==0) return FreeEnum; 1122 1131 else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum; 1132 else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum; 1127 1133 else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum; 1128 1134 else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum; … … 1238 1244 else if (strcmp(name,"MeshX")==0) return MeshXEnum; 1239 1245 else if (strcmp(name,"MeshY")==0) return MeshYEnum; 1240 else if (strcmp(name,"MinVel")==0) return MinVelEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"MinVel")==0) return MinVelEnum; 1241 1250 else if (strcmp(name,"MinVx")==0) return MinVxEnum; 1242 1251 else if (strcmp(name,"MinVy")==0) return MinVyEnum; … … 1244 1253 else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum; 1245 1254 else if (strcmp(name,"Moulin")==0) return MoulinEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 1255 else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 1250 1256 else if (strcmp(name,"Mpi")==0) return MpiEnum; 1251 1257 else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum; … … 1361 1367 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 1362 1368 else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum; 1363 else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum; 1364 1373 else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum; 1365 1374 else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum; … … 1367 1376 else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum; 1368 1377 else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum; 1378 else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum; 1373 1379 else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum; 1374 1380 else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum; -
issm/branches/trunk-larour-SLPS2020/src/m/classes/solidearth.m
r25144 r25742 14 14 requested_outputs = {}; 15 15 transitions = {}; 16 partitionice = []; 17 partitionhydro = []; 16 18 end 17 19 methods … … 31 33 %transitions should be a cell array of vectors: 32 34 self.transitions={}; 35 36 %no partitions requested for barystatic contribution: 37 self.partitionice=[]; 38 self.partitionhydro=[]; 33 39 34 40 %earth radius … … 62 68 fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'); 63 69 fielddisplay(self,'requested_outputs','additional outputs requested'); 70 fielddisplay(self,'partitionice','ice partition vector for barystatic contribution'); 71 fielddisplay(self,'partitionhydro','hydro partition vector for barystatic contribution'); 64 72 self.settings.disp(); 65 73 self.surfaceload.disp(); … … 73 81 WriteData(fid,prefix,'object',self,'fieldname','planetradius','format','Double'); 74 82 WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray'); 83 84 if ~isempty(self.partitionice), 85 npartice=max(self.partitionice)+2; 86 else 87 npartice=0; 88 end 89 if ~isempty(self.partitionhydro), 90 nparthydro=max(self.partitionhydro)+2; 91 else 92 nparthydro=0; 93 end 75 94 95 96 WriteData(fid,prefix,'object',self,'fieldname','partitionice','mattype',1,'format','DoubleMat'); 97 WriteData(fid,prefix,'data',npartice,'format','Integer','name','md.solidearth.npartice'); 98 WriteData(fid,prefix,'object',self,'fieldname','partitionhydro','mattype',1,'format','DoubleMat'); 99 WriteData(fid,prefix,'data',nparthydro,'format','Integer','name','md.solidearth.nparthydro'); 100 76 101 self.settings.marshall(prefix,md,fid); 77 102 self.surfaceload.marshall(prefix,md,fid); … … 98 123 writejscellstring(fid,[modelname '.solidearth.requested_outputs'],self.requested_outputs); 99 124 writejscellarray(fid,[modelname '.solidearth.transitions'],self.transitions); 125 writejscellarray(fid,[modelname '.solidearth.partition'],self.partition); 100 126 end % }}} 101 127 function self = extrude(self,md) % {{{
Note:
See TracChangeset
for help on using the changeset viewer.