Changeset 23366
- Timestamp:
- 10/02/18 03:57:47 (6 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r23066 r23366 313 313 } 314 314 /*Intermediaries */ 315 int smb_model; 315 316 IssmDouble dt,scalar,water_head; 316 IssmDouble water_load,transfer ;317 IssmDouble water_load,transfer,runoff_value; 317 318 IssmDouble epl_storing,epl_transmitivity; 318 319 IssmDouble Jdet; 319 320 IssmDouble residual,connectivity; 320 321 321 IssmDouble *xyz_list = NULL; 322 Input* old_wh_input = NULL; 322 IssmDouble *xyz_list = NULL; 323 Input* old_wh_input = NULL; 324 Input* surface_runoff_input = NULL; 323 325 324 326 /*Fetch number of nodes and dof for this finite element*/ … … 334 336 //basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 335 337 basalelement ->FindParam(&dt,HydrologydtEnum); 336 337 Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessHydrostepEnum); _assert_(epl_thick_input); 338 Input* sed_head_input = basalelement->GetInput(SedimentHeadHydrostepEnum); _assert_(sed_head_input); 339 Input* epl_head_input = basalelement->GetInput(EplHeadHydrostepEnum); _assert_(epl_head_input); 340 Input* water_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input); 341 Input* residual_input = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input); 342 Input* base_input = basalelement->GetInput(BaseEnum); _assert_(base_input); 338 basalelement ->FindParam(&smb_model,SmbEnum); 339 340 Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessHydrostepEnum); _assert_(epl_thick_input); 341 Input* sed_head_input = basalelement->GetInput(SedimentHeadHydrostepEnum); _assert_(sed_head_input); 342 Input* epl_head_input = basalelement->GetInput(EplHeadHydrostepEnum); _assert_(epl_head_input); 343 Input* basal_melt_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input); 344 Input* residual_input = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input); 345 Input* base_input = basalelement->GetInput(BaseEnum); _assert_(base_input); 343 346 344 347 if(dt!= 0.){ 345 348 old_wh_input = basalelement->GetInput(EplHeadOldEnum); _assert_(old_wh_input); 346 349 } 350 if(smb_model==SMBgradientscomponentsEnum){ 351 surface_runoff_input = basalelement->GetInput(SmbRunoffEnum); 352 } 353 347 354 /* Start looping on the number of gaussian points: */ 348 355 Gauss* gauss = basalelement->NewGauss(2); … … 355 362 356 363 /*Loading term*/ 357 water_input->GetInputValue(&water_load,gauss); 358 scalar = Jdet*gauss->weight*(water_load); 364 basal_melt_input->GetInputValue(&water_load,gauss); 365 surface_runoff_input->GetInputValue(&runoff_value,gauss); 366 scalar = Jdet*gauss->weight*(water_load+runoff_value); 359 367 //scalar = Jdet*gauss->weight*(water_load)/epl_transmitivity; 360 368 if(dt!=0.) scalar = scalar*dt; … … 524 532 IssmDouble EPLgrad2; 525 533 IssmDouble EPL_N; 534 IssmDouble opening,closing; 526 535 527 536 femmodel->parameters->FindParam(&domaintype,DomainTypeEnum); … … 589 598 EPLgrad2 = (epl_slopeX[i]*epl_slopeX[i])+(epl_slopeY[i]*epl_slopeY[i]); 590 599 /*And proceed to the real thing*/ 591 thickness[i] = old_thickness[i]/(1.0 592 -((rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat)) 593 +((2.0*A*dt*pow(EPL_N,n))/(pow(n,n)))); 600 opening=(rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat); 601 closing=(2.0*A*dt*pow(EPL_N,n))/(pow(n,n)); 602 /*implicit*/ 603 thickness[i] = old_thickness[i]/(1.0-opening+closing); 604 /*explicit*/ 605 //thickness[i] = old_thickness[i]*(1.0+opening-closing); 606 /*centered*/ 607 //thickness[i] = old_thickness[i]*(1.0+opening-closing)/(1.0-opening+closing); 608 609 if(element->nodes[i]->Sid()==2299){ 610 printf("for node %i \n",element->nodes[i]->Sid()); 611 printf(" old thickness is %g \n",old_thickness[i]); 612 printf(" new thickness is %g \n",thickness[i]); 613 printf(" closing is %g \n",((2.0*A*dt*pow(EPL_N,n))/(pow(n,n)))); 614 printf(" opening is %g \n",((rho_water*gravity*epl_conductivity*EPLgrad2*dt)/(rho_ice*latentheat))); 615 } 594 616 /*Take care of otherthikening*/ 595 617 if(thickness[i]>max_thick){ … … 689 711 vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL); 690 712 /* If epl thickness gets under colapse thickness, close the layer */ 713 if(element->nodes[i]->Sid()==2299){ 714 printf("thickness for maksing for node %i is %g \n",element->nodes[i]->Sid(),epl_thickness[i]);} 691 715 if(epl_thickness[i]<colapse_thick){ 716 if(element->nodes[i]->Sid()==2299){ 717 printf("maksing node %i\n",element->nodes[i]->Sid());} 692 718 vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL); 693 719 recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL); -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r23066 r23366 105 105 iomodel->FetchDataToInput(elements,"md.mesh.vertexonsurface",MeshVertexonsurfaceEnum); 106 106 } 107 108 107 if(isefficientlayer){ 109 108 iomodel->FetchDataToInput(elements,"md.hydrology.mask_eplactive_node",HydrologydcMaskEplactiveNodeEnum); … … 342 341 /*Intermediaries */ 343 342 bool active_element,isefficientlayer; 343 int smb_model; 344 344 IssmDouble dt,scalar,sediment_storing; 345 345 IssmDouble water_head,sediment_transmitivity; 346 IssmDouble water_load, transfer;346 IssmDouble water_load,runoff_value,transfer; 347 347 IssmDouble Jdet; 348 348 349 349 IssmDouble *xyz_list = NULL; 350 350 Input* active_element_input = NULL; 351 Input* old_wh_input = NULL; 351 Input* old_wh_input = NULL; 352 Input* surface_runoff_input = NULL; 352 353 353 354 /*Fetch number of nodes and dof for this finite element*/ … … 361 362 basalelement->GetVerticesCoordinates(&xyz_list); 362 363 //basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 363 basalelement 364 basalelement->FindParam(&dt,HydrologydtEnum); 364 365 basalelement->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 365 366 Input* sed_head_input = basalelement->GetInput(SedimentHeadHydrostepEnum); 367 Input* epl_head_input = basalelement->GetInput(EplHeadHydrostepEnum); 368 Input* base_input = basalelement->GetInput(BaseEnum); 369 Input* water_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input); 370 Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input); 366 basalelement->FindParam(&smb_model,SmbEnum); 367 368 Input* sed_head_input = basalelement->GetInput(SedimentHeadHydrostepEnum); 369 Input* epl_head_input = basalelement->GetInput(EplHeadHydrostepEnum); 370 Input* base_input = basalelement->GetInput(BaseEnum); 371 Input* basal_melt_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melt_input); 372 Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input); 371 373 372 374 if(dt!= 0.){ 373 375 old_wh_input = basalelement->GetInput(SedimentHeadOldEnum); _assert_(old_wh_input); 374 376 } 377 if(smb_model==SMBgradientscomponentsEnum){ 378 surface_runoff_input = basalelement->GetInput(SmbRunoffEnum); 379 } 380 375 381 /*Transfer related Inputs*/ 376 382 if(isefficientlayer){ … … 388 394 /*Loading term*/ 389 395 if(!isefficientlayer){ 390 water_input->GetInputValue(&water_load,gauss); 391 scalar = Jdet*gauss->weight*(water_load); 396 basal_melt_input->GetInputValue(&water_load,gauss); 397 surface_runoff_input->GetInputValue(&runoff_value,gauss); 398 scalar = Jdet*gauss->weight*(water_load+runoff_value); 392 399 //scalar = Jdet*gauss->weight*(water_load)/sediment_transmitivity; 393 400 if(dt!=0.) scalar = scalar*dt; … … 400 407 active_element_input->GetInputValue(&active_element); 401 408 if(!active_element){ 402 water_input->GetInputValue(&water_load,gauss); 403 scalar = Jdet*gauss->weight*(water_load); 409 basal_melt_input->GetInputValue(&water_load,gauss); 410 surface_runoff_input->GetInputValue(&runoff_value,gauss); 411 scalar = Jdet*gauss->weight*(water_load+runoff_value); 404 412 //scalar = Jdet*gauss->weight*(water_load)/sediment_transmitivity; 405 413 if(dt!=0.) scalar = scalar*dt; -
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r23328 r23366 38 38 /*Figure out smb model: */ 39 39 iomodel->FindConstant(&smb_model,"md.smb.model"); 40 41 40 switch(smb_model){ 42 41 case SMBforcingEnum: … … 152 151 iomodel->FetchDataToInput(elements,"md.smb.refreeze",SmbRefreezeEnum,0.); 153 152 break; 153 case SMBgradientscomponentsEnum: 154 iomodel->FetchDataToInput(elements,"md.smb.accualti",SmbAccualtiEnum); 155 iomodel->FetchDataToInput(elements,"md.smb.accugrad",SmbAccugradEnum); 156 iomodel->FetchDataToInput(elements,"md.smb.runoffalti",SmbRunoffaltiEnum); 157 iomodel->FetchDataToInput(elements,"md.smb.runoffgrad",SmbRunoffgradEnum); 158 break; 154 159 default: 155 160 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); … … 262 267 /*Nothing to add to parameters*/ 263 268 break; 269 case SMBgradientscomponentsEnum: 270 parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum)); 271 parameters->AddObject(iomodel->CopyConstantObject("md.smb.accugrad",SmbAccugradEnum)); 272 parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum)); 273 parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffgrad",SmbRunoffgradEnum)); 274 275 iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2); 276 parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M)); 277 iomodel->DeleteData(temp,"md.smb.accuref"); 278 279 iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2); 280 parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M)); 281 iomodel->DeleteData(temp,"md.smb.runoffref"); 282 break; 264 283 default: 265 284 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); … … 296 315 if(VerboseSolution()) _printf0_(" call Delta18oParameterization module\n"); 297 316 Delta18oParameterizationx(femmodel); 298 } 317 } 299 318 if(ismungsm){ 300 319 if(VerboseSolution()) _printf0_(" call MungsmtpParameterization module\n"); 301 320 MungsmtpParameterizationx(femmodel); 302 } 321 } 303 322 if(VerboseSolution()) _printf0_(" call positive degree day module\n"); 304 323 PositiveDegreeDayx(femmodel); … … 341 360 /*Nothing to be done*/ 342 361 break; 362 case SMBgradientscomponentsEnum: 363 if(VerboseSolution())_printf0_(" call smb gradients components module\n"); 364 SmbGradientsComponentsx(femmodel); 365 break; 343 366 default: 344 367 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r23317 r23366 653 653 xDelete<IssmDouble>(tmp); 654 654 655 } 656 /*}}}*/ 657 void Element::SmbGradCompParameterization(void){/*{{{*/ 658 659 /*Are we on the base? If not, return*/ 660 if(!IsOnBase()) return; 661 int numvertices = this->GetNumberOfVertices(); 662 663 int i; 664 IssmDouble accuref, runoffref; //reference values at given altitude 665 IssmDouble accualti, runoffalti; //reference altitudes 666 IssmDouble accugrad, runoffgrad; //gradients from reference altitude 667 IssmDouble rho_water, rho_ice; 668 IssmDouble time; 669 670 IssmDouble* smb = xNew<IssmDouble>(numvertices); 671 IssmDouble* surf = xNew<IssmDouble>(numvertices); 672 IssmDouble* accu = xNew<IssmDouble>(numvertices); 673 IssmDouble* runoff = xNew<IssmDouble>(numvertices); 674 675 /*Get material parameters :*/ 676 rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum); 677 rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum); 678 679 /*Recover parameters*/ 680 parameters->FindParam(&time,TimeEnum); 681 parameters->FindParam(&accualti,SmbAccualtiEnum); 682 parameters->FindParam(&accugrad,SmbAccugradEnum); 683 parameters->FindParam(&runoffalti,SmbRunoffaltiEnum); 684 parameters->FindParam(&runoffgrad,SmbRunoffgradEnum); 685 686 /*Recover reference values at current time*/ 687 parameters->FindParam(&accuref,SmbAccurefEnum,time); 688 parameters->FindParam(&runoffref,SmbRunoffrefEnum,time); 689 690 /*Recover surface elevation*/ 691 GetInputListOnVertices(&surf[0],SurfaceEnum); 692 693 /*Compute the temperature and precipitation*/ 694 for(int iv=0;iv<numvertices;iv++){ 695 accu[iv]=max(0.,(accuref+(surf[iv]-accualti)*accugrad)); 696 runoff[iv]=max(0.,(runoffref+(surf[iv]-runoffalti)*runoffgrad)); 697 smb[iv]=(accu[iv]-runoff[iv])*rho_ice/rho_water; 698 } 699 switch(this->ObjectEnum()){ 700 case TriaEnum: 701 this->inputs->AddInput(new TriaInput(SmbMassBalanceEnum,&smb[0],P1Enum)); 702 this->inputs->AddInput(new TriaInput(SmbRunoffEnum,&runoff[0],P1Enum)); 703 break; 704 case PentaEnum: 705 this->inputs->AddInput(new PentaInput(SmbMassBalanceEnum,&smb[0],P1Enum)); 706 this->inputs->AddInput(new PentaInput(SmbRunoffEnum,&runoff[0],P1Enum)); 707 this->InputExtrude(SmbMassBalanceEnum,-1); 708 this->InputExtrude(SmbRunoffEnum,-1); 709 break; 710 case TetraEnum: 711 this->inputs->AddInput(new TetraInput(SmbMassBalanceEnum,&smb[0],P1Enum)); 712 this->inputs->AddInput(new TetraInput(SmbRunoffEnum,&runoff[0],P1Enum)); 713 this->InputExtrude(SmbMassBalanceEnum,-1); 714 this->InputExtrude(SmbRunoffEnum,-1); 715 break; 716 default: _error_("Not implemented yet"); 717 } 718 /* this->AddInput(SmbMassBalanceEnum,smb,P1Enum); */ 719 /* this->AddInput(SmbRunoffEnum,runoff,P1Enum); */ 720 /*clean-up*/ 721 xDelete<IssmDouble>(surf); 722 xDelete<IssmDouble>(accu); 723 xDelete<IssmDouble>(runoff); 724 xDelete<IssmDouble>(smb); 655 725 } 656 726 /*}}}*/ … … 2588 2658 rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum); 2589 2659 rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum); 2590 2660 2591 2661 /*Get parameters for height corrections*/ 2592 2662 desfac=this->matpar->GetMaterialParameter(SmbDesfacEnum); 2593 2663 rlaps=this->matpar->GetMaterialParameter(SmbRlapsEnum); 2594 2664 2595 2665 /*Recover monthly temperatures and precipitation*/ 2596 2666 Input* input=this->inputs->GetInput(SmbMonthlytemperaturesEnum); _assert_(input); … … 2598 2668 /*Recover smb correction term */ 2599 2669 Input* input3=this->inputs->GetInput(SmbSmbCorrEnum); _assert_(input3); 2600 2670 2601 2671 /* Get time */ 2602 2672 this->parameters->FindParam(&time,TimeEnum); … … 2607 2677 IssmDouble MU_0 = 9.7155; //Firn-warming correction, in (d*deg C)/(mm WE) 2608 2678 IssmDouble mu = MU_0*(1000.0*86400.0)*(rho_ice/rho_water); // (d*deg C)/(mm WE) --> (s*deg C)/(m IE) 2609 2679 2610 2680 /*loop over vertices: */ 2611 2681 Gauss* gauss=this->NewGauss(); … … 2638 2708 /*Get yearlytemperatures */ 2639 2709 for(int month=0;month<12;month++) yearlytemperatures[iv]=yearlytemperatures[iv]+((monthlytemperatures[iv*12+month]+273.15)+t_ampl[iv])*inv_twelve; // Has to be in Kelvin 2640 2641 if(isfirnwarming){ 2710 2711 if(isfirnwarming){ 2642 2712 if(melt_star[iv]>=melt[iv]){ 2643 2713 yearlytemperatures[iv]= yearlytemperatures[iv]+mu*(melt_star[iv]-melt[iv]); … … 2720 2790 xDelete<IssmDouble>(s0t); 2721 2791 xDelete<IssmDouble>(s0p); 2722 xDelete<IssmDouble>(t_ampl); 2723 xDelete<IssmDouble>(p_ampl); 2792 xDelete<IssmDouble>(t_ampl); 2793 xDelete<IssmDouble>(p_ampl); 2724 2794 xDelete<IssmDouble>(smbcorr); 2725 2795 xDelete<IssmDouble>(melt_star); … … 2733 2803 /*Some intputs need to be computed, even if they are already in inputs, they might not be up to date!*/ 2734 2804 switch(output_enum){ 2735 2736 2805 case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break; 2806 case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break; 2737 2807 case StressTensorxxEnum: 2738 2808 case StressTensorxyEnum: … … 2747 2817 case StrainRateyzEnum: 2748 2818 case StrainRatezzEnum: 2749 2819 case StrainRateeffectiveEnum: this->ComputeStrainRate(); break; 2750 2820 case DeviatoricStressxxEnum: 2751 2821 case DeviatoricStressxyEnum: -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r23317 r23366 1 1 /*!\file: Element.h 2 2 * \brief abstract class for Element object 3 * This class is a place holder for the Tria and the Penta elements. 3 * This class is a place holder for the Tria and the Penta elements. 4 4 * It is derived from Element, so DataSets can contain them. 5 */ 5 */ 6 6 7 7 #ifndef _ELEMENT_H_ … … 50 50 int element_type; 51 51 52 public: 52 public: 53 53 /*Constructors/Destructores*/ 54 54 Element(); … … 68 68 void Delta18oParameterization(void); 69 69 void Delta18opdParameterization(void); 70 void SmbGradCompParameterization(void); 70 71 IssmDouble Divergence(void); 71 72 void dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); … … 130 131 void InputUpdateFromConstant(int constant, int name); 131 132 void InputUpdateFromConstant(bool constant, int name); 132 bool IsFloating(); 133 bool IsFloating(); 133 134 bool IsIceInElement(); 134 135 bool IsLandInElement(); 135 136 bool IsWaterInElement(); 136 void LinearFloatingiceMeltingRate(); 137 void SpatialLinearFloatingiceMeltingRate(); 138 void MantlePlumeGeothermalFlux(); 137 void LinearFloatingiceMeltingRate(); 138 void SpatialLinearFloatingiceMeltingRate(); 139 void MantlePlumeGeothermalFlux(); 139 140 void MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses); 140 141 void MigrateGroundingLine(IssmDouble* sheet_ungrounding); 141 void MismipFloatingiceMeltingRate(); 142 void MismipFloatingiceMeltingRate(); 142 143 void MungsmtpParameterization(void); 143 144 ElementMatrix* NewElementMatrix(int approximation_enum=NoneApproximationEnum); … … 241 242 virtual bool IsFaceOnBoundary(void)=0; 242 243 virtual bool IsIcefront(void)=0; 243 virtual bool IsNodeOnShelfFromFlags(IssmDouble* flags)=0; 244 virtual bool IsNodeOnShelfFromFlags(IssmDouble* flags)=0; 244 245 virtual bool IsOnBase()=0; 245 246 virtual bool IsOnSurface()=0; … … 331 332 virtual IssmDouble OceanAverage(IssmDouble* Sg)=0; 332 333 virtual IssmDouble OceanArea(void)=0; 333 virtual void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea)=0; 334 virtual void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea)=0; 334 335 virtual void SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0; 335 336 virtual void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble eartharea)=0; -
issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
r23317 r23366 115 115 iomodel->FindConstant(&this->rlaps,"md.smb.rlaps"); 116 116 iomodel->FindConstant(&this->rlapslgm,"md.smb.rlapslgm"); 117 iomodel->FindConstant(&this->dpermil,"md.smb.dpermil"); 117 iomodel->FindConstant(&this->dpermil,"md.smb.dpermil"); 118 118 case SMBgradientsEnum: 119 119 /*Nothing to add*/ … … 129 129 break; 130 130 case SMBmeltcomponentsEnum: 131 /*Nothing to add*/ 132 break; 133 case SMBgradientscomponentsEnum: 131 134 /*Nothing to add*/ 132 135 break; … … 174 177 break; 175 178 case MaterialsEnum: 176 //we have several types of materials. Retrieve this info first: 179 //we have several types of materials. Retrieve this info first: 177 180 iomodel->FetchData(&nature,&nnat,&dummy,"md.materials.nature"); 178 181 179 //go through list of materials, and create constant parameters accordingly: 180 for(int i=0;i<nnat;i++){ 182 //go through list of materials, and create constant parameters accordingly: 183 for(int i=0;i<nnat;i++){ 181 184 switch(IoCodeToEnumMaterials(nature[i])){ //{{{ 182 185 case MatlithoEnum: … … 223 226 iomodel->FindConstant(&this->rlaps,"md.smb.rlaps"); 224 227 iomodel->FindConstant(&this->rlapslgm,"md.smb.rlapslgm"); 225 iomodel->FindConstant(&this->dpermil,"md.smb.dpermil"); 228 iomodel->FindConstant(&this->dpermil,"md.smb.dpermil"); 226 229 case SMBgradientsEnum: 227 230 /*Nothing to add*/ … … 241 244 default: 242 245 _error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet"); 243 } 246 } 244 247 if(hydrology_model==HydrologydcEnum){ 245 248 iomodel->FindConstant(&this->sediment_compressibility,"md.hydrology.sediment_compressibility"); … … 358 361 359 362 this->Echo(); 360 } 363 } 361 364 /*}}}*/ 362 365 void Matpar::Echo(void){/*{{{*/ … … 389 392 _printf_(" sediment_porosity: " << sediment_porosity << "\n"); 390 393 _printf_(" sediment_thickness: " << sediment_thickness << "\n"); 391 _printf_(" water_compressibility: " << water_compressibility << "\n"); 392 _printf_(" epl_compressibility: " << epl_compressibility << "\n"); 393 _printf_(" epl_porosity: " << epl_porosity << "\n"); 394 _printf_(" epl_init_thickness: " << epl_init_thickness << "\n"); 395 _printf_(" epl_colapse_thickness: " << epl_colapse_thickness << "\n"); 396 _printf_(" epl_max_thickness: " << epl_max_thickness << "\n"); 397 _printf_(" epl_conductivity: " << epl_conductivity << "\n"); 398 _printf_(" lithosphere_shear_modulus: " << lithosphere_shear_modulus << "\n"); 399 _printf_(" lithosphere_density: " << lithosphere_density << "\n"); 400 _printf_(" mantle_shear_modulus: " << mantle_shear_modulus << "\n"); 401 _printf_(" mantle_density: " << mantle_density << "\n"); 402 _printf_(" earth_density: " << earth_density << "\n"); 394 _printf_(" water_compressibility: " << water_compressibility << "\n"); 395 _printf_(" epl_compressibility: " << epl_compressibility << "\n"); 396 _printf_(" epl_porosity: " << epl_porosity << "\n"); 397 _printf_(" epl_init_thickness: " << epl_init_thickness << "\n"); 398 _printf_(" epl_colapse_thickness: " << epl_colapse_thickness << "\n"); 399 _printf_(" epl_max_thickness: " << epl_max_thickness << "\n"); 400 _printf_(" epl_conductivity: " << epl_conductivity << "\n"); 401 _printf_(" lithosphere_shear_modulus: " << lithosphere_shear_modulus << "\n"); 402 _printf_(" lithosphere_density: " << lithosphere_density << "\n"); 403 _printf_(" mantle_shear_modulus: " << mantle_shear_modulus << "\n"); 404 _printf_(" mantle_density: " << mantle_density << "\n"); 405 _printf_(" earth_density: " << earth_density << "\n"); 403 406 return; 404 407 } … … 520 523 this->dpermil=constant; 521 524 break; 522 default: 525 default: 523 526 break; 524 527 } -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r23317 r23366 180 180 for(int i=0;i<ngrids_ocean;i++) if(icemask_oceangrid[i]>0.) icebase_oceangrid[i]=+9999.; 181 181 xDelete<IssmDouble>(icemask_oceangrid); 182 182 183 183 if(my_rank==0){ 184 184 ISSM_MPI_Send(icebase_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm); … … 384 384 } 385 385 386 /*duplicating smb position to have runoff value*/ 387 if(issmb) smb_core(femmodel); 388 386 389 if(ishydrology) hydrology_core(femmodel); 387 390 … … 393 396 394 397 /* from here on, prepare geometry for next time step*/ 395 396 398 if(issmb) smb_core(femmodel); 397 399 … … 403 405 404 406 if(isgroundingline){ 405 407 406 408 /*Start profiler*/ 407 409 femmodel->profiler->Start(GROUNDINGLINECORE); 408 410 409 411 if(VerboseSolution()) _printf0_(" computing new grounding line position\n"); 410 412 GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); … … 416 418 femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum); 417 419 extrudefrombase_core(femmodel); 418 420 419 421 /*Stop profiler*/ 420 422 femmodel->profiler->Stop(GROUNDINGLINECORE); -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
r23328 r23366 1 1 /*!\file SurfaceMassBalancex 2 * \brief: calculates SMB 2 * \brief: calculates SMB 3 3 */ 4 4 … … 105 105 for(v=0;v<numvertices;v++){ 106 106 // if surface is above the ELA 107 if(s[v]>ela[v]){ 107 if(s[v]>ela[v]){ 108 108 smb[v]=b_pos[v]*(s[v]-ela[v]); 109 109 } … … 167 167 // INPUT: surface elevation (m): hd(NA) 168 168 // monthly mean surface sealevel temperature (degrees C): vTempsea(NA 169 // ,NTIME) 169 // ,NTIME) 170 170 // monthly mean precip rate (m/yr water equivalent): vPrec(NA,NTIME) 171 171 // OUTPUT: mass-balance (m/yr ice): agd(NA) … … 174 174 int i, it, jj, itm; 175 175 IssmDouble DT = 0.02, sigfac, snormfac; 176 IssmDouble signorm = 5.5; // signorm : sigma of the temperature distribution for a normal day 176 IssmDouble signorm = 5.5; // signorm : sigma of the temperature distribution for a normal day 177 177 IssmDouble siglim; // sigma limit for the integration which is equal to 2.5 sigmanorm 178 178 IssmDouble signormc = signorm - 0.5; // sigma of the temperature distribution for cloudy day … … 180 180 IssmDouble tstep, tsint, tint, tstepc; 181 181 int NPDMAX = 1504, NPDCMAX = 1454; 182 //IssmDouble pdds[NPDMAX]={0}; 182 //IssmDouble pdds[NPDMAX]={0}; 183 183 //IssmDouble pds[NPDCMAX]={0}; 184 184 IssmDouble pddt, pd ; // pd : snow/precip fraction, precipitation falling as snow … … 193 193 Element *element = NULL; 194 194 195 pdds=xNew<IssmDouble>(NPDMAX+1); 196 pds=xNew<IssmDouble>(NPDCMAX+1); 195 pdds=xNew<IssmDouble>(NPDMAX+1); 196 pds=xNew<IssmDouble>(NPDCMAX+1); 197 197 198 198 // Get ismungsm parameter … … 216 216 217 217 if(itm >= NPDMAX) _error_("increase NPDMAX in massBalance.cpp"); 218 for(it = 0; it < itm; it++){ 218 for(it = 0; it < itm; it++){ 219 219 // tstar = REAL(it)*DT-siglim; 220 220 tstar = it*DT-siglim; … … 263 263 }/*}}}*/ 264 264 void PositiveDegreeDaySicopolisx(FemModel* femmodel){/*{{{*/ 265 265 266 266 bool isfirnwarming; 267 267 femmodel->parameters->FindParam(&isfirnwarming,SmbIsfirnwarmingEnum); 268 268 269 269 for(int i=0;i<femmodel->elements->Size();i++){ 270 270 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); … … 357 357 /*Allocate all arrays*/ 358 358 int numvertices = element->GetNumberOfVertices(); 359 IssmDouble* acc = xNew<IssmDouble>(numvertices); 359 IssmDouble* acc = xNew<IssmDouble>(numvertices); 360 360 IssmDouble* evap = xNew<IssmDouble>(numvertices); 361 IssmDouble* runoff = xNew<IssmDouble>(numvertices); 361 IssmDouble* runoff = xNew<IssmDouble>(numvertices); 362 362 IssmDouble* smb = xNew<IssmDouble>(numvertices); 363 363 … … 399 399 int numvertices = element->GetNumberOfVertices(); 400 400 IssmDouble* acc = xNew<IssmDouble>(numvertices); 401 IssmDouble* evap = xNew<IssmDouble>(numvertices); 401 IssmDouble* evap = xNew<IssmDouble>(numvertices); 402 402 IssmDouble* melt = xNew<IssmDouble>(numvertices); 403 403 IssmDouble* refreeze = xNew<IssmDouble>(numvertices); … … 425 425 426 426 }/*}}}*/ 427 void SmbGradientsComponentsx(FemModel* femmodel){/*{{{*/ 428 429 // void SurfaceMassBalancex(hd,agd,ni){ 430 // INPUT parameters: ni: working size of arrays 431 // INPUT: surface elevation (m): hd(NA) 432 // OUTPUT: mass-balance (m/yr ice): agd(NA) 433 434 for(int i=0;i<femmodel->elements->Size();i++){ 435 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 436 element->SmbGradCompParameterization(); 437 } 438 439 }/*}}}*/ -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
r23317 r23366 1 1 /*!\file: SurfaceMassBalancex.h 2 2 * \brief header file for SMB 3 */ 3 */ 4 4 5 5 #ifndef _SurfaceMassBalancex_H … … 19 19 void SmbHenningx(FemModel* femmodel); 20 20 void SmbComponentsx(FemModel* femmodel); 21 void SmbMeltComponentsx(FemModel* femmodel); 22 21 void SmbMeltComponentsx(FemModel* femmodel); 22 void SmbGradientsComponentsx(FemModel* femmodel); 23 23 /*GEMB: */ 24 24 void Gembx(FemModel* femmodel); 25 void GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY); 25 void GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY); 26 26 IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT); 27 27 void grainGrowth(IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid); … … 29 29 void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid); 30 30 void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid); 31 void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx,IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble dIce, int sid); 31 void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx,IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble dIce, int sid); 32 32 void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble dIce, int sid); 33 33 void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r23327 r23366 273 273 SettingsSolverResidueThresholdEnum, 274 274 SettingsWaitonlockEnum, 275 SmbAccualtiEnum, 276 SmbAccugradEnum, 277 SmbAccurefEnum, 275 278 SmbAdThreshEnum, 276 279 SmbAIceEnum, … … 304 307 SmbPfacEnum, 305 308 SmbRequestedOutputsEnum, 309 SmbRunoffaltiEnum, 310 SmbRunoffgradEnum, 311 SmbRunoffrefEnum, 306 312 SmbSealevEnum, 307 313 SmbSwIdxEnum, … … 528 534 SealevelNEsaRateEnum, 529 535 SealevelRSLRateEnum, 530 SealevelUEsaEnum, 536 SealevelUEsaEnum, 531 537 SealevelRSLEustaticRateEnum, 532 SealevelNEsaEnum, 538 SealevelNEsaEnum, 533 539 SealevelUGiaEnum, 534 540 SealevelNGiaEnum, … … 1101 1107 SMBpddEnum, 1102 1108 SMBpddSicopolisEnum, 1109 SMBgradientscomponentsEnum, 1103 1110 SmbRlapsEnum, 1104 1111 SmbRlapslgmEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r23329 r23366 281 281 case SettingsSolverResidueThresholdEnum : return "SettingsSolverResidueThreshold"; 282 282 case SettingsWaitonlockEnum : return "SettingsWaitonlock"; 283 case SmbAccualtiEnum : return "SmbAccualti"; 284 case SmbAccugradEnum : return "SmbAccugrad"; 285 case SmbAccurefEnum : return "SmbAccuref"; 283 286 case SmbAdThreshEnum : return "SmbAdThresh"; 284 287 case SmbAIceEnum : return "SmbAIce"; … … 312 315 case SmbPfacEnum : return "SmbPfac"; 313 316 case SmbRequestedOutputsEnum : return "SmbRequestedOutputs"; 317 case SmbRunoffaltiEnum : return "SmbRunoffalti"; 318 case SmbRunoffgradEnum : return "SmbRunoffgrad"; 319 case SmbRunoffrefEnum : return "SmbRunoffref"; 314 320 case SmbSealevEnum : return "SmbSealev"; 315 321 case SmbSwIdxEnum : return "SmbSwIdx"; … … 1105 1111 case SMBpddEnum : return "SMBpdd"; 1106 1112 case SMBpddSicopolisEnum : return "SMBpddSicopolis"; 1113 case SMBgradientscomponentsEnum : return "SMBgradientscomponents"; 1107 1114 case SmbRlapsEnum : return "SmbRlaps"; 1108 1115 case SmbRlapslgmEnum : return "SmbRlapslgm"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r23329 r23366 287 287 else if (strcmp(name,"SettingsSolverResidueThreshold")==0) return SettingsSolverResidueThresholdEnum; 288 288 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 289 else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum; 290 else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum; 291 else if (strcmp(name,"SmbAccuref")==0) return SmbAccurefEnum; 289 292 else if (strcmp(name,"SmbAdThresh")==0) return SmbAdThreshEnum; 290 293 else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum; … … 318 321 else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum; 319 322 else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum; 323 else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum; 324 else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum; 325 else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum; 320 326 else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum; 321 327 else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum; … … 377 383 else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum; 378 384 else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum; 379 else if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum; 380 389 else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum; 381 390 else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum; … … 383 392 else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum; 384 393 else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"Velocity")==0) return VelocityEnum; 394 else if (strcmp(name,"Velocity")==0) return VelocityEnum; 389 395 else if (strcmp(name,"WorldComm")==0) return WorldCommEnum; 390 396 else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum; … … 500 506 else if (strcmp(name,"Ice")==0) return IceEnum; 501 507 else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum; 502 else if (strcmp(name,"Input")==0) return InputEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"Input")==0) return InputEnum; 503 512 else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; 504 513 else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum; … … 506 515 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 507 516 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 517 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 512 518 else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum; 513 519 else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; … … 623 629 else if (strcmp(name,"SmbVz")==0) return SmbVzEnum; 624 630 else if (strcmp(name,"SmbW")==0) return SmbWEnum; 625 else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"SmbWini")==0) return SmbWiniEnum; 626 635 else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum; 627 636 else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum; … … 629 638 else if (strcmp(name,"SmbZY")==0) return SmbZYEnum; 630 639 else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum; 640 else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum; 635 641 else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum; 636 642 else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum; … … 746 752 else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum; 747 753 else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum; 748 else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum; 749 758 else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum; 750 759 else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum; … … 752 761 else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum; 753 762 else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 763 else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; 758 764 else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum; 759 765 else if (strcmp(name,"Divergence")==0) return DivergenceEnum; … … 869 875 else if (strcmp(name,"LambdaS")==0) return LambdaSEnum; 870 876 else if (strcmp(name,"LATaylorHood")==0) return LATaylorHoodEnum; 871 else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; 872 881 else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum; 873 882 else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum; … … 875 884 else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum; 876 885 else if (strcmp(name,"Loads")==0) return LoadsEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 886 else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 881 887 else if (strcmp(name,"LoveHi")==0) return LoveHiEnum; 882 888 else if (strcmp(name,"LoveHr")==0) return LoveHrEnum; … … 992 998 else if (strcmp(name,"Outputdefinition37")==0) return Outputdefinition37Enum; 993 999 else if (strcmp(name,"Outputdefinition38")==0) return Outputdefinition38Enum; 994 else if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition39")==0) return Outputdefinition39Enum; 995 1004 else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum; 996 1005 else if (strcmp(name,"Outputdefinition40")==0) return Outputdefinition40Enum; … … 998 1007 else if (strcmp(name,"Outputdefinition42")==0) return Outputdefinition42Enum; 999 1008 else if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum; 1009 else if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum; 1004 1010 else if (strcmp(name,"Outputdefinition45")==0) return Outputdefinition45Enum; 1005 1011 else if (strcmp(name,"Outputdefinition46")==0) return Outputdefinition46Enum; … … 1115 1121 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 1116 1122 else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum; 1117 else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum; 1118 1127 else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum; 1119 1128 else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum; … … 1121 1130 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 1122 1131 else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 1132 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 1127 1133 else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum; 1128 1134 else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum; … … 1132 1138 else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum; 1133 1139 else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum; 1140 else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum; 1134 1141 else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum; 1135 1142 else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum; -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r23317 r23366 174 174 case 9: return SMBgradientselaEnum; 175 175 case 10: return SMBpddSicopolisEnum; 176 case 11: return SMBgradientscomponentsEnum; 176 177 default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet"); 177 178 } … … 206 207 case 3: return HydrologyshaktiEnum; 207 208 case 4: return HydrologypismEnum; 208 default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet"); 209 default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet"); 209 210 } 210 211 }/*}}}*/ … … 212 213 switch(enum_in){ 213 214 case 1: return MatdamageiceEnum; 214 case 2: return MatestarEnum; 215 case 2: return MatestarEnum; 215 216 case 3: return MaticeEnum; 216 217 case 4: return MatenhancediceEnum; 217 218 case 5: return MatlithoEnum; 218 219 case 6: return MaterialsEnum; 219 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 220 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 220 221 } 221 222 }/*}}}*/ … … 223 224 switch(enum_in){ 224 225 case 1: return FixedTimesteppingEnum; 225 case 2: return AdaptiveTimesteppingEnum; 226 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 226 case 2: return AdaptiveTimesteppingEnum; 227 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 227 228 } 228 229 }/*}}}*/ … … 230 231 switch(enum_in){ 231 232 case 1: return AmrBamgEnum; 232 case 2: return AmrNeopzEnum; 233 default: _error_("Marshalled AMR code \""<<enum_in<<"\" not supported yet"); 233 case 2: return AmrNeopzEnum; 234 default: _error_("Marshalled AMR code \""<<enum_in<<"\" not supported yet"); 234 235 } 235 236 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.