Changeset 27315
- Timestamp:
- 10/19/22 13:16:12 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyGlaDSAnalysis.cpp
r27295 r27315 158 158 159 159 /*Friction law variables*/ 160 int FrictionCoupling; 160 161 switch(frictionlaw){ 161 162 case 1: 163 iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling"); 162 164 iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum); 163 165 iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum); 164 166 iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum); 165 break; 166 case 8: 167 if(FrictionCoupling==3){ 168 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);} 169 else if(FrictionCoupling==4){ 170 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum); 171 } 172 break; 173 case 2: 174 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 175 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 176 break; 177 case 3: 178 iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling"); 179 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 180 iomodel->FetchDataToInput(inputs,elements,"md.friction.As",FrictionAsEnum); 181 iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum); 182 if(FrictionCoupling==3){ 183 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);} 184 else if(FrictionCoupling==4){ 185 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum); 186 } 187 break; 188 case 4: 167 189 iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum); 190 iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum); 191 iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum); 192 iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum); 193 iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum); 194 iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling"); 195 break; 196 case 5: 197 iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum); 198 iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum); 199 iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum); 200 iomodel->FetchDataToInput(inputs,elements,"md.friction.water_layer",FrictionWaterLayerEnum); 201 break; 202 case 6: 203 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 204 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 205 iomodel->FetchDataToInput(inputs,elements,"md.initialization.pressure",PressureEnum); 206 iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum); 207 break; 208 case 7: 209 iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling"); 210 iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum); 211 iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficientcoulomb",FrictionCoefficientcoulombEnum); 212 iomodel->FetchDataToInput(inputs,elements,"md.friction.p",FrictionPEnum); 213 iomodel->FetchDataToInput(inputs,elements,"md.friction.q",FrictionQEnum); 214 if(FrictionCoupling==3){ 215 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);} 216 else if(FrictionCoupling==4){ 217 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum); 218 219 } 220 break; 221 case 9: 222 iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum); 223 iomodel->FetchDataToInput(inputs,elements,"md.friction.coefficient",FrictionCoefficientEnum); 224 iomodel->FetchDataToInput(inputs,elements,"md.friction.pressure_adjusted_temperature",FrictionPressureAdjustedTemperatureEnum); 225 InputUpdateFromConstantx(inputs,elements,1.,FrictionPEnum); 226 InputUpdateFromConstantx(inputs,elements,1.,FrictionQEnum); 227 break; 228 case 10: 229 iomodel->FetchDataToInput(inputs,elements,"md.friction.till_friction_angle",FrictionTillFrictionAngleEnum); 230 iomodel->FetchDataToInput(inputs,elements,"md.friction.sediment_compressibility_coefficient",FrictionSedimentCompressibilityCoefficientEnum); 231 iomodel->FetchDataToInput(inputs,elements,"md.hydrology.watercolumn_max",HydrologyWatercolumnMaxEnum); 232 iomodel->FetchDataToInput(inputs,elements,"md.initialization.watercolumn",WatercolumnEnum,0.); 233 break; 234 case 11: 235 iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling"); 236 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 237 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 238 iomodel->FetchDataToInput(inputs,elements,"md.friction.Cmax",FrictionCmaxEnum); 239 if(FrictionCoupling==3){ 240 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);} 241 else if(FrictionCoupling==4){ 242 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum); 243 } 244 break; 245 case 12: 246 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 247 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 248 iomodel->FetchDataToInput(inputs,elements,"md.friction.f",FrictionfEnum); 249 break; 250 case 13: 251 iomodel->FindConstant(&FrictionCoupling,"md.friction.coupling"); 252 iomodel->FetchDataToInput(inputs,elements,"md.friction.C",FrictionCEnum); 253 iomodel->FetchDataToInput(inputs,elements,"md.friction.m",FrictionMEnum); 254 if(FrictionCoupling==3){ 255 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",FrictionEffectivePressureEnum);} 256 else if(FrictionCoupling==4){ 257 iomodel->FetchDataToInput(inputs,elements,"md.friction.effective_pressure",EffectivePressureEnum); 258 } 168 259 break; 169 260 default: 170 _error_(" Friction law "<< frictionlaw <<" not supported");261 _error_("friction law "<< frictionlaw <<" not supported"); 171 262 } 172 263 }/*}}}*/ … … 195 286 int frictionlaw; 196 287 iomodel->FindConstant(&frictionlaw,"md.friction.law"); 197 if(frictionlaw==6){ 198 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 199 } 200 if(frictionlaw==4){ 201 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 202 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 203 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 204 } 205 if(frictionlaw==1 || frictionlaw==3 || frictionlaw==7){ 206 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 207 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 208 } 209 if(frictionlaw==9){ 210 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 211 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 212 parameters->AddObject(new IntParam(FrictionCouplingEnum,0)); 288 switch(frictionlaw){ 289 case 1: 290 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 291 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 292 break; 293 case 2: 294 break; 295 case 3: 296 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 297 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 298 break; 299 case 4: 300 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 301 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 302 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 303 break; 304 case 5: 305 parameters->AddObject(iomodel->CopyConstantObject("md.friction.f",FrictionFEnum)); 306 break; 307 case 6: 308 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 309 break; 310 case 7: 311 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 312 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 313 break; 314 case 8: 315 break; 316 case 9: 317 parameters->AddObject(iomodel->CopyConstantObject("md.friction.gamma",FrictionGammaEnum)); 318 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 319 parameters->AddObject(new IntParam(FrictionCouplingEnum,0)); 320 break; 321 case 10: 322 parameters->AddObject(new IntParam(FrictionCouplingEnum,2)); /*comment this line to use effective pressure from Beuler and Pelt (2015)*/ 323 parameters->AddObject(new DoubleParam(FrictionEffectivePressureLimitEnum,0.)); 324 parameters->AddObject(iomodel->CopyConstantObject("md.friction.pseudoplasticity_exponent",FrictionPseudoplasticityExponentEnum)); 325 parameters->AddObject(iomodel->CopyConstantObject("md.friction.threshold_speed",FrictionThresholdSpeedEnum)); 326 parameters->AddObject(iomodel->CopyConstantObject("md.friction.delta",FrictionDeltaEnum)); 327 parameters->AddObject(iomodel->CopyConstantObject("md.friction.void_ratio",FrictionVoidRatioEnum)); 328 break; 329 case 11: 330 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 331 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 332 break; 333 case 12: 334 parameters->AddObject(new IntParam(FrictionCouplingEnum,2)); 335 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 336 break; 337 case 13: 338 parameters->AddObject(iomodel->CopyConstantObject("md.friction.coupling",FrictionCouplingEnum)); 339 parameters->AddObject(iomodel->CopyConstantObject("md.friction.effective_pressure_limit",FrictionEffectivePressureLimitEnum)); 340 break; 341 default: _error_("Friction law "<<frictionlaw<<" not implemented yet"); 213 342 } 214 343
Note:
See TracChangeset
for help on using the changeset viewer.