source: issm/oecreview/Archive/23390-24306/ISSM-23990-23991.diff

Last change on this file was 24307, checked in by Mathieu Morlighem, 5 years ago

NEW: adding Archive/23390-24306

File size: 20.7 KB
  • ../trunk-jpl/src/c/classes/FemModel.h

     
    126126                void StrainRateeffectivex();
    127127                void StressIntensityFactorx();
    128128                void RignotMeltParameterizationx();
     129                void TotalCalvingFluxx(IssmDouble* pFbmb, bool scaled);
     130                void TotalCalvingFluxLevelsetx(IssmDouble* pGbmb, bool scaled);
    129131                void TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled);
    130132                void TotalGroundedBmbx(IssmDouble* pGbmb, bool scaled);
    131133                void TotalSmbx(IssmDouble* pSmb, bool scaled);
  • ../trunk-jpl/src/c/classes/FemModel.cpp

     
    22012201                                        case MaxVzEnum:                          this->MaxVzx(&double_result);                          break;
    22022202                                        case MaxAbsVzEnum:                       this->MaxAbsVzx(&double_result);                       break;
    22032203                                        case MassFluxEnum:                       this->MassFluxx(&double_result);                       break;
     2204                                        case TotalCalvingFluxEnum:               this->TotalCalvingFluxx(&double_result,false);         break;
     2205                                        case TotalCalvingFluxLevelsetEnum:         this->TotalCalvingFluxLevelsetx(&double_result,false);          break;
    22042206                                        case TotalFloatingBmbEnum:               this->TotalFloatingBmbx(&double_result,false);         break;
    22052207                                        case TotalFloatingBmbScaledEnum:         this->TotalFloatingBmbx(&double_result,true);          break;
    22062208                                        case TotalGroundedBmbEnum:               this->TotalGroundedBmbx(&double_result,false);         break;
     
    24452447                case RheologyBbarAbsGradientEnum:        RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
    24462448                case DragCoefficientAbsGradientEnum:     DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
    24472449                case BalancethicknessMisfitEnum:         BalancethicknessMisfitx(responses); break;
     2450                case TotalCalvingFluxEnum:                              this->TotalCalvingFluxx(responses, false); break;
     2451                case TotalCalvingFluxLevelsetEnum:                        this->TotalCalvingFluxLevelsetx(responses, false); break;
    24482452                case TotalFloatingBmbEnum:                              this->TotalFloatingBmbx(responses, false); break;
    24492453                case TotalFloatingBmbScaledEnum:                          this->TotalFloatingBmbx(responses, true); break;
    24502454                case TotalGroundedBmbEnum:                              this->TotalGroundedBmbx(responses, false); break;
     
    27092713        *pdt=min_dt;
    27102714}
    27112715/*}}}*/
     2716void FemModel::TotalCalvingFluxx(IssmDouble* pM, bool scaled){/*{{{*/
     2717
     2718        IssmDouble local_calving_flux = 0;
     2719        IssmDouble total_calving_flux;
     2720
     2721        for(int i=0;i<this->elements->Size();i++){
     2722                Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
     2723                local_calving_flux+=element->TotalCalvingFlux(scaled);
     2724        }
     2725        ISSM_MPI_Reduce(&local_calving_flux,&total_calving_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     2726        ISSM_MPI_Bcast(&total_calving_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     2727
     2728        /*Assign output pointers: */
     2729        *pM=total_calving_flux;
     2730
     2731}/*}}}*/
     2732void FemModel::TotalCalvingFluxLevelsetx(IssmDouble* pM, bool scaled){/*{{{*/
     2733
     2734        IssmDouble local_calving_flux = 0;
     2735        IssmDouble total_calving_flux;
     2736
     2737        for(int i=0;i<this->elements->Size();i++){
     2738                Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
     2739                local_calving_flux+=element->TotalCalvingFluxLevelset(scaled);
     2740        }
     2741        ISSM_MPI_Reduce(&local_calving_flux,&total_calving_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     2742        ISSM_MPI_Bcast(&total_calving_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     2743
     2744        /*Assign output pointers: */
     2745        *pM=total_calving_flux;
     2746
     2747}/*}}}*/
    27122748void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled){/*{{{*/
    27132749
    27142750        IssmDouble local_fbmb = 0;
  • ../trunk-jpl/src/c/classes/Elements/Element.h

     
    319319                virtual IssmDouble SurfaceArea(void)=0;
    320320                virtual int        TensorInterpolation()=0;
    321321                virtual IssmDouble TimeAdapt()=0;
     322                virtual IssmDouble TotalCalvingFlux(bool scaled){_error_("not implemented");};
     323                virtual IssmDouble TotalCalvingFluxLevelset(bool scaled){_error_("not implemented");};
    322324                virtual IssmDouble TotalFloatingBmb(bool scaled)=0;
    323325                virtual IssmDouble TotalGroundedBmb(bool scaled)=0;
    324326                virtual IssmDouble TotalSmb(bool scaled)=0;
  • ../trunk-jpl/src/c/classes/Elements/Tria.cpp

     
    40594059        return dt;
    40604060}
    40614061/*}}}*/
     4062IssmDouble Tria::TotalCalvingFlux(bool scaled){/*{{{*/
     4063
     4064        /*Make sure there is an ice front here*/
     4065        if(!IsIceInElement() || !IsIcefront()) return 0;
     4066
     4067        /*Scaled not implemented yet...*/
     4068        _assert_(!scaled);
     4069
     4070        /*Get domain type*/
     4071        int domaintype;
     4072        parameters->FindParam(&domaintype,DomainTypeEnum);
     4073
     4074        /*Get ice front coordinates*/
     4075        IssmDouble *xyz_list = NULL;
     4076        IssmDouble* xyz_front = NULL;
     4077        this->GetVerticesCoordinates(&xyz_list);
     4078        this->GetIcefrontCoordinates(&xyz_front,xyz_list,MaskIceLevelsetEnum);
     4079
     4080        /*Get normal vector*/
     4081        IssmDouble normal[3];
     4082        this->NormalSection(&normal[0],xyz_front);
     4083        //normal[0] = -normal[0];
     4084        //normal[1] = -normal[1];
     4085
     4086        /*Get inputs*/
     4087        IssmDouble flux = 0.;
     4088        IssmDouble calvingratex,calvingratey,thickness,Jdet;
     4089        IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
     4090        Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
     4091        Input* calvingratex_input=NULL;
     4092        Input* calvingratey_input=NULL;
     4093        if(domaintype==Domain2DhorizontalEnum){
     4094                calvingratex_input=inputs->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
     4095                calvingratey_input=inputs->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
     4096        }
     4097        else{
     4098                calvingratex_input=inputs->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
     4099                calvingratey_input=inputs->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
     4100        }
     4101
     4102        /*Start looping on Gaussian points*/
     4103        Gauss* gauss=this->NewGauss(xyz_list,xyz_front,3);
     4104        for(int ig=gauss->begin();ig<gauss->end();ig++){
     4105
     4106                gauss->GaussPoint(ig);
     4107                thickness_input->GetInputValue(&thickness,gauss);
     4108                calvingratex_input->GetInputValue(&calvingratex,gauss);
     4109                calvingratey_input->GetInputValue(&calvingratey,gauss);
     4110                this->JacobianDeterminantSurface(&Jdet,xyz_front,gauss);
     4111
     4112                flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
     4113        }
     4114
     4115        return flux;
     4116}
     4117/*}}}*/
     4118IssmDouble Tria::TotalCalvingFluxLevelset(bool scaled){/*{{{*/
     4119
     4120        /*Make sure there is an ice front here*/
     4121        if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
     4122
     4123        /*Scaled not implemented yet...*/
     4124        _assert_(!scaled);
     4125
     4126        int               domaintype,index1,index2;
     4127        const IssmPDouble epsilon = 1.e-15;
     4128        IssmDouble        s1,s2;
     4129        IssmDouble        gl[NUMVERTICES];
     4130        IssmDouble        xyz_front[2][3];
     4131
     4132
     4133        IssmDouble *xyz_list = NULL;
     4134        this->GetVerticesCoordinates(&xyz_list);
     4135
     4136        /*Recover parameters and values*/
     4137        parameters->FindParam(&domaintype,DomainTypeEnum);
     4138        GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
     4139
     4140        /*Be sure that values are not zero*/
     4141        if(gl[0]==0.) gl[0]=gl[0]+epsilon;
     4142        if(gl[1]==0.) gl[1]=gl[1]+epsilon;
     4143        if(gl[2]==0.) gl[2]=gl[2]+epsilon;
     4144
     4145        if(domaintype==Domain2DverticalEnum){
     4146                _error_("not implemented");
     4147        }
     4148        else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
     4149                int pt1 = 0;
     4150                int pt2 = 1;
     4151                if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
     4152
     4153                        /*Portion of the segments*/
     4154                        s1=gl[2]/(gl[2]-gl[1]);
     4155                        s2=gl[2]/(gl[2]-gl[0]);
     4156                        if(gl[2]<0.){
     4157                                pt1 = 1; pt2 = 0;
     4158                        }
     4159                        xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
     4160                        xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
     4161                        xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
     4162                        xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
     4163                        xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
     4164                        xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
     4165                }
     4166                else if(gl[1]*gl[2]>0){ //Nodes 1 and 2 are similar, so points must be found on segment 0-1 and 0-2
     4167
     4168                        /*Portion of the segments*/
     4169                        s1=gl[0]/(gl[0]-gl[1]);
     4170                        s2=gl[0]/(gl[0]-gl[2]);
     4171                        if(gl[0]<0.){
     4172                                pt1 = 1; pt2 = 0;
     4173                        }
     4174
     4175                        xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
     4176                        xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
     4177                        xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
     4178                        xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
     4179                        xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
     4180                        xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
     4181                }
     4182                else if(gl[0]*gl[2]>0){ //Nodes 0 and 2 are similar, so points must be found on segment 1-0 and 1-2
     4183
     4184                        /*Portion of the segments*/
     4185                        s1=gl[1]/(gl[1]-gl[0]);
     4186                        s2=gl[1]/(gl[1]-gl[2]);
     4187                        if(gl[1]<0.){
     4188                                pt1 = 1; pt2 = 0;
     4189                        }
     4190
     4191                        xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
     4192                        xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
     4193                        xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
     4194                        xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
     4195                        xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
     4196                        xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
     4197                }
     4198                else{
     4199                        _error_("case not possible");
     4200                }
     4201
     4202        }
     4203        else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
     4204
     4205        /*Some checks in debugging mode*/
     4206        _assert_(s1>=0 && s1<=1.);
     4207        _assert_(s2>=0 && s2<=1.);
     4208
     4209        /*Get normal vector*/
     4210        IssmDouble normal[3];
     4211        this->NormalSection(&normal[0],&xyz_front[0][0]);
     4212        normal[0] = -normal[0];
     4213        normal[1] = -normal[1];
     4214
     4215        /*Get inputs*/
     4216        IssmDouble flux = 0.;
     4217        IssmDouble calvingratex,calvingratey,thickness,Jdet;
     4218        IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
     4219        Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
     4220        Input* calvingratex_input=NULL;
     4221        Input* calvingratey_input=NULL;
     4222        if(domaintype==Domain2DhorizontalEnum){
     4223                calvingratex_input=inputs->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
     4224                calvingratey_input=inputs->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
     4225        }
     4226        else{
     4227                calvingratex_input=inputs->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
     4228                calvingratey_input=inputs->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
     4229        }
     4230
     4231        /*Start looping on Gaussian points*/
     4232        Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
     4233        for(int ig=gauss->begin();ig<gauss->end();ig++){
     4234
     4235                gauss->GaussPoint(ig);
     4236                thickness_input->GetInputValue(&thickness,gauss);
     4237                calvingratex_input->GetInputValue(&calvingratex,gauss);
     4238                calvingratey_input->GetInputValue(&calvingratey,gauss);
     4239                this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
     4240
     4241                flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
     4242        }
     4243
     4244        return flux;
     4245}
     4246/*}}}*/
    40624247IssmDouble Tria::TotalFloatingBmb(bool scaled){/*{{{*/
    40634248
    40644249        /*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
  • ../trunk-jpl/src/c/classes/Elements/Tria.h

     
    136136                IssmDouble  SurfaceArea(void);
    137137                int         TensorInterpolation();
    138138                IssmDouble  TimeAdapt();
     139                IssmDouble  TotalCalvingFlux(bool scaled);
     140                IssmDouble  TotalCalvingFluxLevelset(bool scaled);
    139141                IssmDouble  TotalFloatingBmb(bool scaled);
    140142                IssmDouble  TotalGroundedBmb(bool scaled);
    141143                IssmDouble  TotalSmb(bool scaled);
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    144144        FrictionThresholdSpeedEnum,
    145145        FrictionVoidRatioEnum,
    146146        FrontalForcingsBasinIcefrontAreaEnum,
    147         FrontalForcingsBasinIdEnum,
    148147        FrontalForcingsNumberofBasinsEnum,
    149148        FrontalForcingsParamEnum,
    150149        GiaCrossSectionShapeEnum,
     
    531530        FrictionTillFrictionAngleEnum,
    532531        FrictionWaterLayerEnum,
    533532        FrictionfEnum,
     533        FrontalForcingsBasinIdEnum,
    534534        FrontalForcingsSubglacialDischargeEnum,
    535535        FrontalForcingsThermalForcingEnum,
    536536        GeometryHydrostaticRatioEnum,
     
    12071207        ThermalAnalysisEnum,
    12081208        ThermalSolutionEnum,
    12091209        ThicknessErrorEstimatorEnum,
     1210        TotalCalvingFluxEnum,
     1211        TotalCalvingFluxLevelsetEnum,
    12101212        TotalFloatingBmbEnum,
    12111213        TotalFloatingBmbScaledEnum,
    12121214        TotalGroundedBmbEnum,
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    152152                case FrictionThresholdSpeedEnum : return "FrictionThresholdSpeed";
    153153                case FrictionVoidRatioEnum : return "FrictionVoidRatio";
    154154                case FrontalForcingsBasinIcefrontAreaEnum : return "FrontalForcingsBasinIcefrontArea";
    155                 case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
    156155                case FrontalForcingsNumberofBasinsEnum : return "FrontalForcingsNumberofBasins";
    157156                case FrontalForcingsParamEnum : return "FrontalForcingsParam";
    158157                case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape";
     
    537536                case FrictionTillFrictionAngleEnum : return "FrictionTillFrictionAngle";
    538537                case FrictionWaterLayerEnum : return "FrictionWaterLayer";
    539538                case FrictionfEnum : return "Frictionf";
     539                case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
    540540                case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge";
    541541                case FrontalForcingsThermalForcingEnum : return "FrontalForcingsThermalForcing";
    542542                case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
     
    12111211                case ThermalAnalysisEnum : return "ThermalAnalysis";
    12121212                case ThermalSolutionEnum : return "ThermalSolution";
    12131213                case ThicknessErrorEstimatorEnum : return "ThicknessErrorEstimator";
     1214                case TotalCalvingFluxEnum : return "TotalCalvingFlux";
     1215                case TotalCalvingFluxLevelsetEnum : return "TotalCalvingFluxLevelset";
    12141216                case TotalFloatingBmbEnum : return "TotalFloatingBmb";
    12151217                case TotalFloatingBmbScaledEnum : return "TotalFloatingBmbScaled";
    12161218                case TotalGroundedBmbEnum : return "TotalGroundedBmb";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    155155              else if (strcmp(name,"FrictionThresholdSpeed")==0) return FrictionThresholdSpeedEnum;
    156156              else if (strcmp(name,"FrictionVoidRatio")==0) return FrictionVoidRatioEnum;
    157157              else if (strcmp(name,"FrontalForcingsBasinIcefrontArea")==0) return FrontalForcingsBasinIcefrontAreaEnum;
    158               else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
    159158              else if (strcmp(name,"FrontalForcingsNumberofBasins")==0) return FrontalForcingsNumberofBasinsEnum;
    160159              else if (strcmp(name,"FrontalForcingsParam")==0) return FrontalForcingsParamEnum;
    161160              else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
     
    259258              else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
    260259              else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
    261260              else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
     261              else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
    266               else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
     265              if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
    267266              else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
    268267              else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
    269268              else if (strcmp(name,"MaterialsRhoSeawater")==0) return MaterialsRhoSeawaterEnum;
     
    382381              else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
    383382              else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
    384383              else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
     384              else if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
    389               else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
     388              if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
    390389              else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
    391390              else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
    392391              else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
     
    505504              else if (strcmp(name,"DistanceToGroundingline")==0) return DistanceToGroundinglineEnum;
    506505              else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
    507506              else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
     507              else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
    512               else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
     511              if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
    513512              else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
    514513              else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
    515514              else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum;
     
    549548              else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
    550549              else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
    551550              else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
     551              else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
    552552              else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum;
    553553              else if (strcmp(name,"FrontalForcingsThermalForcing")==0) return FrontalForcingsThermalForcingEnum;
    554554              else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
     
    12381238              else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
    12391239              else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
    12401240              else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
     1241              else if (strcmp(name,"TotalCalvingFlux")==0) return TotalCalvingFluxEnum;
     1242              else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
    12411243              else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
    12421244              else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
    12431245              else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
    1244               else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
    1245               else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
     1249              if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
     1250              else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
     1251              else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
    12501252              else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
    12511253              else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
    12521254              else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
Note: See TracBrowser for help on using the repository browser.