[24307] | 1 | Index: ../trunk-jpl/src/c/classes/FemModel.h
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/src/c/classes/FemModel.h (revision 23990)
|
---|
| 4 | +++ ../trunk-jpl/src/c/classes/FemModel.h (revision 23991)
|
---|
| 5 | @@ -126,6 +126,8 @@
|
---|
| 6 | void StrainRateeffectivex();
|
---|
| 7 | void StressIntensityFactorx();
|
---|
| 8 | void RignotMeltParameterizationx();
|
---|
| 9 | + void TotalCalvingFluxx(IssmDouble* pFbmb, bool scaled);
|
---|
| 10 | + void TotalCalvingFluxLevelsetx(IssmDouble* pGbmb, bool scaled);
|
---|
| 11 | void TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled);
|
---|
| 12 | void TotalGroundedBmbx(IssmDouble* pGbmb, bool scaled);
|
---|
| 13 | void TotalSmbx(IssmDouble* pSmb, bool scaled);
|
---|
| 14 | Index: ../trunk-jpl/src/c/classes/FemModel.cpp
|
---|
| 15 | ===================================================================
|
---|
| 16 | --- ../trunk-jpl/src/c/classes/FemModel.cpp (revision 23990)
|
---|
| 17 | +++ ../trunk-jpl/src/c/classes/FemModel.cpp (revision 23991)
|
---|
| 18 | @@ -2201,6 +2201,8 @@
|
---|
| 19 | case MaxVzEnum: this->MaxVzx(&double_result); break;
|
---|
| 20 | case MaxAbsVzEnum: this->MaxAbsVzx(&double_result); break;
|
---|
| 21 | case MassFluxEnum: this->MassFluxx(&double_result); break;
|
---|
| 22 | + case TotalCalvingFluxEnum: this->TotalCalvingFluxx(&double_result,false); break;
|
---|
| 23 | + case TotalCalvingFluxLevelsetEnum: this->TotalCalvingFluxLevelsetx(&double_result,false); break;
|
---|
| 24 | case TotalFloatingBmbEnum: this->TotalFloatingBmbx(&double_result,false); break;
|
---|
| 25 | case TotalFloatingBmbScaledEnum: this->TotalFloatingBmbx(&double_result,true); break;
|
---|
| 26 | case TotalGroundedBmbEnum: this->TotalGroundedBmbx(&double_result,false); break;
|
---|
| 27 | @@ -2445,6 +2447,8 @@
|
---|
| 28 | case RheologyBbarAbsGradientEnum: RheologyBbarAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
|
---|
| 29 | case DragCoefficientAbsGradientEnum: DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
|
---|
| 30 | case BalancethicknessMisfitEnum: BalancethicknessMisfitx(responses); break;
|
---|
| 31 | + case TotalCalvingFluxEnum: this->TotalCalvingFluxx(responses, false); break;
|
---|
| 32 | + case TotalCalvingFluxLevelsetEnum: this->TotalCalvingFluxLevelsetx(responses, false); break;
|
---|
| 33 | case TotalFloatingBmbEnum: this->TotalFloatingBmbx(responses, false); break;
|
---|
| 34 | case TotalFloatingBmbScaledEnum: this->TotalFloatingBmbx(responses, true); break;
|
---|
| 35 | case TotalGroundedBmbEnum: this->TotalGroundedBmbx(responses, false); break;
|
---|
| 36 | @@ -2709,6 +2713,38 @@
|
---|
| 37 | *pdt=min_dt;
|
---|
| 38 | }
|
---|
| 39 | /*}}}*/
|
---|
| 40 | +void FemModel::TotalCalvingFluxx(IssmDouble* pM, bool scaled){/*{{{*/
|
---|
| 41 | +
|
---|
| 42 | + IssmDouble local_calving_flux = 0;
|
---|
| 43 | + IssmDouble total_calving_flux;
|
---|
| 44 | +
|
---|
| 45 | + for(int i=0;i<this->elements->Size();i++){
|
---|
| 46 | + Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
|
---|
| 47 | + local_calving_flux+=element->TotalCalvingFlux(scaled);
|
---|
| 48 | + }
|
---|
| 49 | + ISSM_MPI_Reduce(&local_calving_flux,&total_calving_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
|
---|
| 50 | + ISSM_MPI_Bcast(&total_calving_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
|
---|
| 51 | +
|
---|
| 52 | + /*Assign output pointers: */
|
---|
| 53 | + *pM=total_calving_flux;
|
---|
| 54 | +
|
---|
| 55 | +}/*}}}*/
|
---|
| 56 | +void FemModel::TotalCalvingFluxLevelsetx(IssmDouble* pM, bool scaled){/*{{{*/
|
---|
| 57 | +
|
---|
| 58 | + IssmDouble local_calving_flux = 0;
|
---|
| 59 | + IssmDouble total_calving_flux;
|
---|
| 60 | +
|
---|
| 61 | + for(int i=0;i<this->elements->Size();i++){
|
---|
| 62 | + Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
|
---|
| 63 | + local_calving_flux+=element->TotalCalvingFluxLevelset(scaled);
|
---|
| 64 | + }
|
---|
| 65 | + ISSM_MPI_Reduce(&local_calving_flux,&total_calving_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
|
---|
| 66 | + ISSM_MPI_Bcast(&total_calving_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
|
---|
| 67 | +
|
---|
| 68 | + /*Assign output pointers: */
|
---|
| 69 | + *pM=total_calving_flux;
|
---|
| 70 | +
|
---|
| 71 | +}/*}}}*/
|
---|
| 72 | void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb, bool scaled){/*{{{*/
|
---|
| 73 |
|
---|
| 74 | IssmDouble local_fbmb = 0;
|
---|
| 75 | Index: ../trunk-jpl/src/c/classes/Elements/Element.h
|
---|
| 76 | ===================================================================
|
---|
| 77 | --- ../trunk-jpl/src/c/classes/Elements/Element.h (revision 23990)
|
---|
| 78 | +++ ../trunk-jpl/src/c/classes/Elements/Element.h (revision 23991)
|
---|
| 79 | @@ -319,6 +319,8 @@
|
---|
| 80 | virtual IssmDouble SurfaceArea(void)=0;
|
---|
| 81 | virtual int TensorInterpolation()=0;
|
---|
| 82 | virtual IssmDouble TimeAdapt()=0;
|
---|
| 83 | + virtual IssmDouble TotalCalvingFlux(bool scaled){_error_("not implemented");};
|
---|
| 84 | + virtual IssmDouble TotalCalvingFluxLevelset(bool scaled){_error_("not implemented");};
|
---|
| 85 | virtual IssmDouble TotalFloatingBmb(bool scaled)=0;
|
---|
| 86 | virtual IssmDouble TotalGroundedBmb(bool scaled)=0;
|
---|
| 87 | virtual IssmDouble TotalSmb(bool scaled)=0;
|
---|
| 88 | Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp
|
---|
| 89 | ===================================================================
|
---|
| 90 | --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 23990)
|
---|
| 91 | +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 23991)
|
---|
| 92 | @@ -4059,6 +4059,191 @@
|
---|
| 93 | return dt;
|
---|
| 94 | }
|
---|
| 95 | /*}}}*/
|
---|
| 96 | +IssmDouble Tria::TotalCalvingFlux(bool scaled){/*{{{*/
|
---|
| 97 | +
|
---|
| 98 | + /*Make sure there is an ice front here*/
|
---|
| 99 | + if(!IsIceInElement() || !IsIcefront()) return 0;
|
---|
| 100 | +
|
---|
| 101 | + /*Scaled not implemented yet...*/
|
---|
| 102 | + _assert_(!scaled);
|
---|
| 103 | +
|
---|
| 104 | + /*Get domain type*/
|
---|
| 105 | + int domaintype;
|
---|
| 106 | + parameters->FindParam(&domaintype,DomainTypeEnum);
|
---|
| 107 | +
|
---|
| 108 | + /*Get ice front coordinates*/
|
---|
| 109 | + IssmDouble *xyz_list = NULL;
|
---|
| 110 | + IssmDouble* xyz_front = NULL;
|
---|
| 111 | + this->GetVerticesCoordinates(&xyz_list);
|
---|
| 112 | + this->GetIcefrontCoordinates(&xyz_front,xyz_list,MaskIceLevelsetEnum);
|
---|
| 113 | +
|
---|
| 114 | + /*Get normal vector*/
|
---|
| 115 | + IssmDouble normal[3];
|
---|
| 116 | + this->NormalSection(&normal[0],xyz_front);
|
---|
| 117 | + //normal[0] = -normal[0];
|
---|
| 118 | + //normal[1] = -normal[1];
|
---|
| 119 | +
|
---|
| 120 | + /*Get inputs*/
|
---|
| 121 | + IssmDouble flux = 0.;
|
---|
| 122 | + IssmDouble calvingratex,calvingratey,thickness,Jdet;
|
---|
| 123 | + IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
|
---|
| 124 | + Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
|
---|
| 125 | + Input* calvingratex_input=NULL;
|
---|
| 126 | + Input* calvingratey_input=NULL;
|
---|
| 127 | + if(domaintype==Domain2DhorizontalEnum){
|
---|
| 128 | + calvingratex_input=inputs->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
|
---|
| 129 | + calvingratey_input=inputs->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
|
---|
| 130 | + }
|
---|
| 131 | + else{
|
---|
| 132 | + calvingratex_input=inputs->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
|
---|
| 133 | + calvingratey_input=inputs->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
|
---|
| 134 | + }
|
---|
| 135 | +
|
---|
| 136 | + /*Start looping on Gaussian points*/
|
---|
| 137 | + Gauss* gauss=this->NewGauss(xyz_list,xyz_front,3);
|
---|
| 138 | + for(int ig=gauss->begin();ig<gauss->end();ig++){
|
---|
| 139 | +
|
---|
| 140 | + gauss->GaussPoint(ig);
|
---|
| 141 | + thickness_input->GetInputValue(&thickness,gauss);
|
---|
| 142 | + calvingratex_input->GetInputValue(&calvingratex,gauss);
|
---|
| 143 | + calvingratey_input->GetInputValue(&calvingratey,gauss);
|
---|
| 144 | + this->JacobianDeterminantSurface(&Jdet,xyz_front,gauss);
|
---|
| 145 | +
|
---|
| 146 | + flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
|
---|
| 147 | + }
|
---|
| 148 | +
|
---|
| 149 | + return flux;
|
---|
| 150 | +}
|
---|
| 151 | +/*}}}*/
|
---|
| 152 | +IssmDouble Tria::TotalCalvingFluxLevelset(bool scaled){/*{{{*/
|
---|
| 153 | +
|
---|
| 154 | + /*Make sure there is an ice front here*/
|
---|
| 155 | + if(!IsIceInElement() || !IsZeroLevelset(MaskIceLevelsetEnum)) return 0;
|
---|
| 156 | +
|
---|
| 157 | + /*Scaled not implemented yet...*/
|
---|
| 158 | + _assert_(!scaled);
|
---|
| 159 | +
|
---|
| 160 | + int domaintype,index1,index2;
|
---|
| 161 | + const IssmPDouble epsilon = 1.e-15;
|
---|
| 162 | + IssmDouble s1,s2;
|
---|
| 163 | + IssmDouble gl[NUMVERTICES];
|
---|
| 164 | + IssmDouble xyz_front[2][3];
|
---|
| 165 | +
|
---|
| 166 | +
|
---|
| 167 | + IssmDouble *xyz_list = NULL;
|
---|
| 168 | + this->GetVerticesCoordinates(&xyz_list);
|
---|
| 169 | +
|
---|
| 170 | + /*Recover parameters and values*/
|
---|
| 171 | + parameters->FindParam(&domaintype,DomainTypeEnum);
|
---|
| 172 | + GetInputListOnVertices(&gl[0],MaskIceLevelsetEnum);
|
---|
| 173 | +
|
---|
| 174 | + /*Be sure that values are not zero*/
|
---|
| 175 | + if(gl[0]==0.) gl[0]=gl[0]+epsilon;
|
---|
| 176 | + if(gl[1]==0.) gl[1]=gl[1]+epsilon;
|
---|
| 177 | + if(gl[2]==0.) gl[2]=gl[2]+epsilon;
|
---|
| 178 | +
|
---|
| 179 | + if(domaintype==Domain2DverticalEnum){
|
---|
| 180 | + _error_("not implemented");
|
---|
| 181 | + }
|
---|
| 182 | + else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum || domaintype==Domain3DsurfaceEnum){
|
---|
| 183 | + int pt1 = 0;
|
---|
| 184 | + int pt2 = 1;
|
---|
| 185 | + if(gl[0]*gl[1]>0){ //Nodes 0 and 1 are similar, so points must be found on segment 0-2 and 1-2
|
---|
| 186 | +
|
---|
| 187 | + /*Portion of the segments*/
|
---|
| 188 | + s1=gl[2]/(gl[2]-gl[1]);
|
---|
| 189 | + s2=gl[2]/(gl[2]-gl[0]);
|
---|
| 190 | + if(gl[2]<0.){
|
---|
| 191 | + pt1 = 1; pt2 = 0;
|
---|
| 192 | + }
|
---|
| 193 | + xyz_front[pt2][0]=xyz_list[3*2+0]+s1*(xyz_list[3*1+0]-xyz_list[3*2+0]);
|
---|
| 194 | + xyz_front[pt2][1]=xyz_list[3*2+1]+s1*(xyz_list[3*1+1]-xyz_list[3*2+1]);
|
---|
| 195 | + xyz_front[pt2][2]=xyz_list[3*2+2]+s1*(xyz_list[3*1+2]-xyz_list[3*2+2]);
|
---|
| 196 | + xyz_front[pt1][0]=xyz_list[3*2+0]+s2*(xyz_list[3*0+0]-xyz_list[3*2+0]);
|
---|
| 197 | + xyz_front[pt1][1]=xyz_list[3*2+1]+s2*(xyz_list[3*0+1]-xyz_list[3*2+1]);
|
---|
| 198 | + xyz_front[pt1][2]=xyz_list[3*2+2]+s2*(xyz_list[3*0+2]-xyz_list[3*2+2]);
|
---|
| 199 | + }
|
---|
| 200 | + 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
|
---|
| 201 | +
|
---|
| 202 | + /*Portion of the segments*/
|
---|
| 203 | + s1=gl[0]/(gl[0]-gl[1]);
|
---|
| 204 | + s2=gl[0]/(gl[0]-gl[2]);
|
---|
| 205 | + if(gl[0]<0.){
|
---|
| 206 | + pt1 = 1; pt2 = 0;
|
---|
| 207 | + }
|
---|
| 208 | +
|
---|
| 209 | + xyz_front[pt1][0]=xyz_list[3*0+0]+s1*(xyz_list[3*1+0]-xyz_list[3*0+0]);
|
---|
| 210 | + xyz_front[pt1][1]=xyz_list[3*0+1]+s1*(xyz_list[3*1+1]-xyz_list[3*0+1]);
|
---|
| 211 | + xyz_front[pt1][2]=xyz_list[3*0+2]+s1*(xyz_list[3*1+2]-xyz_list[3*0+2]);
|
---|
| 212 | + xyz_front[pt2][0]=xyz_list[3*0+0]+s2*(xyz_list[3*2+0]-xyz_list[3*0+0]);
|
---|
| 213 | + xyz_front[pt2][1]=xyz_list[3*0+1]+s2*(xyz_list[3*2+1]-xyz_list[3*0+1]);
|
---|
| 214 | + xyz_front[pt2][2]=xyz_list[3*0+2]+s2*(xyz_list[3*2+2]-xyz_list[3*0+2]);
|
---|
| 215 | + }
|
---|
| 216 | + 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
|
---|
| 217 | +
|
---|
| 218 | + /*Portion of the segments*/
|
---|
| 219 | + s1=gl[1]/(gl[1]-gl[0]);
|
---|
| 220 | + s2=gl[1]/(gl[1]-gl[2]);
|
---|
| 221 | + if(gl[1]<0.){
|
---|
| 222 | + pt1 = 1; pt2 = 0;
|
---|
| 223 | + }
|
---|
| 224 | +
|
---|
| 225 | + xyz_front[pt2][0]=xyz_list[3*1+0]+s1*(xyz_list[3*0+0]-xyz_list[3*1+0]);
|
---|
| 226 | + xyz_front[pt2][1]=xyz_list[3*1+1]+s1*(xyz_list[3*0+1]-xyz_list[3*1+1]);
|
---|
| 227 | + xyz_front[pt2][2]=xyz_list[3*1+2]+s1*(xyz_list[3*0+2]-xyz_list[3*1+2]);
|
---|
| 228 | + xyz_front[pt1][0]=xyz_list[3*1+0]+s2*(xyz_list[3*2+0]-xyz_list[3*1+0]);
|
---|
| 229 | + xyz_front[pt1][1]=xyz_list[3*1+1]+s2*(xyz_list[3*2+1]-xyz_list[3*1+1]);
|
---|
| 230 | + xyz_front[pt1][2]=xyz_list[3*1+2]+s2*(xyz_list[3*2+2]-xyz_list[3*1+2]);
|
---|
| 231 | + }
|
---|
| 232 | + else{
|
---|
| 233 | + _error_("case not possible");
|
---|
| 234 | + }
|
---|
| 235 | +
|
---|
| 236 | + }
|
---|
| 237 | + else _error_("mesh type "<<EnumToStringx(domaintype)<<"not supported yet ");
|
---|
| 238 | +
|
---|
| 239 | + /*Some checks in debugging mode*/
|
---|
| 240 | + _assert_(s1>=0 && s1<=1.);
|
---|
| 241 | + _assert_(s2>=0 && s2<=1.);
|
---|
| 242 | +
|
---|
| 243 | + /*Get normal vector*/
|
---|
| 244 | + IssmDouble normal[3];
|
---|
| 245 | + this->NormalSection(&normal[0],&xyz_front[0][0]);
|
---|
| 246 | + normal[0] = -normal[0];
|
---|
| 247 | + normal[1] = -normal[1];
|
---|
| 248 | +
|
---|
| 249 | + /*Get inputs*/
|
---|
| 250 | + IssmDouble flux = 0.;
|
---|
| 251 | + IssmDouble calvingratex,calvingratey,thickness,Jdet;
|
---|
| 252 | + IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
|
---|
| 253 | + Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);
|
---|
| 254 | + Input* calvingratex_input=NULL;
|
---|
| 255 | + Input* calvingratey_input=NULL;
|
---|
| 256 | + if(domaintype==Domain2DhorizontalEnum){
|
---|
| 257 | + calvingratex_input=inputs->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
|
---|
| 258 | + calvingratey_input=inputs->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
|
---|
| 259 | + }
|
---|
| 260 | + else{
|
---|
| 261 | + calvingratex_input=inputs->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
|
---|
| 262 | + calvingratey_input=inputs->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
|
---|
| 263 | + }
|
---|
| 264 | +
|
---|
| 265 | + /*Start looping on Gaussian points*/
|
---|
| 266 | + Gauss* gauss=this->NewGauss(xyz_list,&xyz_front[0][0],3);
|
---|
| 267 | + for(int ig=gauss->begin();ig<gauss->end();ig++){
|
---|
| 268 | +
|
---|
| 269 | + gauss->GaussPoint(ig);
|
---|
| 270 | + thickness_input->GetInputValue(&thickness,gauss);
|
---|
| 271 | + calvingratex_input->GetInputValue(&calvingratex,gauss);
|
---|
| 272 | + calvingratey_input->GetInputValue(&calvingratey,gauss);
|
---|
| 273 | + this->JacobianDeterminantSurface(&Jdet,&xyz_front[0][0],gauss);
|
---|
| 274 | +
|
---|
| 275 | + flux += rho_ice*Jdet*gauss->weight*thickness*(calvingratex*normal[0] + calvingratey*normal[1]);
|
---|
| 276 | + }
|
---|
| 277 | +
|
---|
| 278 | + return flux;
|
---|
| 279 | +}
|
---|
| 280 | +/*}}}*/
|
---|
| 281 | IssmDouble Tria::TotalFloatingBmb(bool scaled){/*{{{*/
|
---|
| 282 |
|
---|
| 283 | /*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
|
---|
| 284 | Index: ../trunk-jpl/src/c/classes/Elements/Tria.h
|
---|
| 285 | ===================================================================
|
---|
| 286 | --- ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 23990)
|
---|
| 287 | +++ ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 23991)
|
---|
| 288 | @@ -136,6 +136,8 @@
|
---|
| 289 | IssmDouble SurfaceArea(void);
|
---|
| 290 | int TensorInterpolation();
|
---|
| 291 | IssmDouble TimeAdapt();
|
---|
| 292 | + IssmDouble TotalCalvingFlux(bool scaled);
|
---|
| 293 | + IssmDouble TotalCalvingFluxLevelset(bool scaled);
|
---|
| 294 | IssmDouble TotalFloatingBmb(bool scaled);
|
---|
| 295 | IssmDouble TotalGroundedBmb(bool scaled);
|
---|
| 296 | IssmDouble TotalSmb(bool scaled);
|
---|
| 297 | Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
|
---|
| 298 | ===================================================================
|
---|
| 299 | --- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 23990)
|
---|
| 300 | +++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h (revision 23991)
|
---|
| 301 | @@ -144,7 +144,6 @@
|
---|
| 302 | FrictionThresholdSpeedEnum,
|
---|
| 303 | FrictionVoidRatioEnum,
|
---|
| 304 | FrontalForcingsBasinIcefrontAreaEnum,
|
---|
| 305 | - FrontalForcingsBasinIdEnum,
|
---|
| 306 | FrontalForcingsNumberofBasinsEnum,
|
---|
| 307 | FrontalForcingsParamEnum,
|
---|
| 308 | GiaCrossSectionShapeEnum,
|
---|
| 309 | @@ -531,6 +530,7 @@
|
---|
| 310 | FrictionTillFrictionAngleEnum,
|
---|
| 311 | FrictionWaterLayerEnum,
|
---|
| 312 | FrictionfEnum,
|
---|
| 313 | + FrontalForcingsBasinIdEnum,
|
---|
| 314 | FrontalForcingsSubglacialDischargeEnum,
|
---|
| 315 | FrontalForcingsThermalForcingEnum,
|
---|
| 316 | GeometryHydrostaticRatioEnum,
|
---|
| 317 | @@ -1207,6 +1207,8 @@
|
---|
| 318 | ThermalAnalysisEnum,
|
---|
| 319 | ThermalSolutionEnum,
|
---|
| 320 | ThicknessErrorEstimatorEnum,
|
---|
| 321 | + TotalCalvingFluxEnum,
|
---|
| 322 | + TotalCalvingFluxLevelsetEnum,
|
---|
| 323 | TotalFloatingBmbEnum,
|
---|
| 324 | TotalFloatingBmbScaledEnum,
|
---|
| 325 | TotalGroundedBmbEnum,
|
---|
| 326 | Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
|
---|
| 327 | ===================================================================
|
---|
| 328 | --- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 23990)
|
---|
| 329 | +++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp (revision 23991)
|
---|
| 330 | @@ -152,7 +152,6 @@
|
---|
| 331 | case FrictionThresholdSpeedEnum : return "FrictionThresholdSpeed";
|
---|
| 332 | case FrictionVoidRatioEnum : return "FrictionVoidRatio";
|
---|
| 333 | case FrontalForcingsBasinIcefrontAreaEnum : return "FrontalForcingsBasinIcefrontArea";
|
---|
| 334 | - case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
|
---|
| 335 | case FrontalForcingsNumberofBasinsEnum : return "FrontalForcingsNumberofBasins";
|
---|
| 336 | case FrontalForcingsParamEnum : return "FrontalForcingsParam";
|
---|
| 337 | case GiaCrossSectionShapeEnum : return "GiaCrossSectionShape";
|
---|
| 338 | @@ -537,6 +536,7 @@
|
---|
| 339 | case FrictionTillFrictionAngleEnum : return "FrictionTillFrictionAngle";
|
---|
| 340 | case FrictionWaterLayerEnum : return "FrictionWaterLayer";
|
---|
| 341 | case FrictionfEnum : return "Frictionf";
|
---|
| 342 | + case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
|
---|
| 343 | case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge";
|
---|
| 344 | case FrontalForcingsThermalForcingEnum : return "FrontalForcingsThermalForcing";
|
---|
| 345 | case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
|
---|
| 346 | @@ -1211,6 +1211,8 @@
|
---|
| 347 | case ThermalAnalysisEnum : return "ThermalAnalysis";
|
---|
| 348 | case ThermalSolutionEnum : return "ThermalSolution";
|
---|
| 349 | case ThicknessErrorEstimatorEnum : return "ThicknessErrorEstimator";
|
---|
| 350 | + case TotalCalvingFluxEnum : return "TotalCalvingFlux";
|
---|
| 351 | + case TotalCalvingFluxLevelsetEnum : return "TotalCalvingFluxLevelset";
|
---|
| 352 | case TotalFloatingBmbEnum : return "TotalFloatingBmb";
|
---|
| 353 | case TotalFloatingBmbScaledEnum : return "TotalFloatingBmbScaled";
|
---|
| 354 | case TotalGroundedBmbEnum : return "TotalGroundedBmb";
|
---|
| 355 | Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
|
---|
| 356 | ===================================================================
|
---|
| 357 | --- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 23990)
|
---|
| 358 | +++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp (revision 23991)
|
---|
| 359 | @@ -155,7 +155,6 @@
|
---|
| 360 | else if (strcmp(name,"FrictionThresholdSpeed")==0) return FrictionThresholdSpeedEnum;
|
---|
| 361 | else if (strcmp(name,"FrictionVoidRatio")==0) return FrictionVoidRatioEnum;
|
---|
| 362 | else if (strcmp(name,"FrontalForcingsBasinIcefrontArea")==0) return FrontalForcingsBasinIcefrontAreaEnum;
|
---|
| 363 | - else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
|
---|
| 364 | else if (strcmp(name,"FrontalForcingsNumberofBasins")==0) return FrontalForcingsNumberofBasinsEnum;
|
---|
| 365 | else if (strcmp(name,"FrontalForcingsParam")==0) return FrontalForcingsParamEnum;
|
---|
| 366 | else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
|
---|
| 367 | @@ -259,11 +258,11 @@
|
---|
| 368 | else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
|
---|
| 369 | else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
|
---|
| 370 | else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
|
---|
| 371 | + else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
|
---|
| 372 | else stage=3;
|
---|
| 373 | }
|
---|
| 374 | if(stage==3){
|
---|
| 375 | - if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
|
---|
| 376 | - else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
|
---|
| 377 | + if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
|
---|
| 378 | else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
|
---|
| 379 | else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
|
---|
| 380 | else if (strcmp(name,"MaterialsRhoSeawater")==0) return MaterialsRhoSeawaterEnum;
|
---|
| 381 | @@ -382,11 +381,11 @@
|
---|
| 382 | else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
|
---|
| 383 | else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
|
---|
| 384 | else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
|
---|
| 385 | + else if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
|
---|
| 386 | else stage=4;
|
---|
| 387 | }
|
---|
| 388 | if(stage==4){
|
---|
| 389 | - if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
|
---|
| 390 | - else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
|
---|
| 391 | + if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
|
---|
| 392 | else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
|
---|
| 393 | else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
|
---|
| 394 | else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
|
---|
| 395 | @@ -505,11 +504,11 @@
|
---|
| 396 | else if (strcmp(name,"DistanceToGroundingline")==0) return DistanceToGroundinglineEnum;
|
---|
| 397 | else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
|
---|
| 398 | else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
|
---|
| 399 | + else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
|
---|
| 400 | else stage=5;
|
---|
| 401 | }
|
---|
| 402 | if(stage==5){
|
---|
| 403 | - if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
|
---|
| 404 | - else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
|
---|
| 405 | + if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
|
---|
| 406 | else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
|
---|
| 407 | else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
|
---|
| 408 | else if (strcmp(name,"EffectivePressure")==0) return EffectivePressureEnum;
|
---|
| 409 | @@ -549,6 +548,7 @@
|
---|
| 410 | else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
|
---|
| 411 | else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
|
---|
| 412 | else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
|
---|
| 413 | + else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
|
---|
| 414 | else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum;
|
---|
| 415 | else if (strcmp(name,"FrontalForcingsThermalForcing")==0) return FrontalForcingsThermalForcingEnum;
|
---|
| 416 | else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
|
---|
| 417 | @@ -1238,15 +1238,17 @@
|
---|
| 418 | else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
|
---|
| 419 | else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
|
---|
| 420 | else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
|
---|
| 421 | + else if (strcmp(name,"TotalCalvingFlux")==0) return TotalCalvingFluxEnum;
|
---|
| 422 | + else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
|
---|
| 423 | else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
|
---|
| 424 | else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
|
---|
| 425 | else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
|
---|
| 426 | - else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
|
---|
| 427 | - else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
|
---|
| 428 | else stage=11;
|
---|
| 429 | }
|
---|
| 430 | if(stage==11){
|
---|
| 431 | - if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
|
---|
| 432 | + if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
|
---|
| 433 | + else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
|
---|
| 434 | + else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
|
---|
| 435 | else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
|
---|
| 436 | else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
|
---|
| 437 | else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
|
---|