Changeset 21389
- Timestamp:
- 11/17/16 16:29:42 (8 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
r21382 r21389 175 175 iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum); 176 176 switch(materialstype){ 177 case MatenhancediceEnum: 178 iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum); 179 iomodel->FetchDataToInput(elements,"md.materials.rheology_E",MaterialsRheologyEEnum); 180 break; 177 181 case MatdamageiceEnum: 178 182 iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum); -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r21382 r21389 119 119 iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum); 120 120 switch(materialstype){ 121 case MatenhancediceEnum: 122 iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum); 123 iomodel->FetchDataToInput(elements,"md.materials.rheology_E",MaterialsRheologyEEnum); 124 break; 121 125 case MatdamageiceEnum: 122 126 iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum); -
issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
r20966 r21389 31 31 this->element=NULL; 32 32 this->isdamaged=false; 33 this->isenhanced=false; 33 34 return; 34 35 } … … 50 51 int materialtype; 51 52 iomodel->FindConstant(&materialtype,"md.materials.type"); 52 if(materialtype==MatdamageiceEnum) this->isdamaged = true; 53 else if(materialtype==MaticeEnum) this->isdamaged = false; 53 if(materialtype==MatdamageiceEnum){ 54 this->isdamaged = true; 55 this->isenhanced = false; 56 } 57 else if(materialtype==MaticeEnum){ 58 this->isdamaged = false; 59 this->isenhanced = false; 60 } 61 else if(materialtype==MatenhancediceEnum){ 62 this->isdamaged = false; 63 this->isenhanced = true; 64 } 54 65 else _error_("Material type not recognized"); 55 56 66 return; 57 67 … … 78 88 matice->element =(Element*)this->helement->delivers(); 79 89 matice->isdamaged = this->isdamaged; 90 matice->isenhanced = this->isenhanced; 80 91 81 92 return matice; … … 95 106 matice->element =element_in; 96 107 matice->isdamaged = this->isdamaged; 108 matice->isenhanced = this->isenhanced; 97 109 98 110 return matice; … … 124 136 MARSHALLING(mid); 125 137 MARSHALLING(isdamaged); 138 MARSHALLING(isenhanced); 126 139 this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 127 140 this->element=(Element*)this->helement->delivers(); … … 207 220 } 208 221 /*}}}*/ 222 IssmDouble Matice::GetE(){/*{{{*/ 223 224 _assert_(this->isenhanced); 225 /*Output*/ 226 IssmDouble E; 227 if(this->isenhanced)element->inputs->GetInputAverage(&E,MaterialsRheologyEEnum); 228 return E; 229 } 230 /*}}}*/ 231 IssmDouble Matice::GetEbar(){/*{{{*/ 232 233 _assert_(this->isenhanced); 234 /*Output*/ 235 IssmDouble Ebar; 236 if(this->isenhanced)element->inputs->GetInputAverage(&Ebar,MaterialsRheologyEbarEnum); 237 return Ebar; 238 } 239 /*}}}*/ 209 240 IssmDouble Matice::GetN(){/*{{{*/ 210 241 … … 219 250 220 251 return this->isdamaged; 252 } 253 /*}}}*/ 254 bool Matice::IsEnhanced(){/*{{{*/ 255 256 return this->isenhanced; 221 257 } 222 258 /*}}}*/ … … 225 261 (1-D) B 226 262 viscosity= ------------------------- 227 2 eps_eff ^[(n-1)/n]228 229 where viscosity is the visco tiy, B the flow law parameter , eps_eff is the effective strain rate230 and n the flow law exponent.263 2 E^[1/n] eps_eff ^[(n-1)/n] 264 265 where viscosity is the viscosity, B the flow law parameter , eps_eff is the effective strain rate, 266 n the flow law exponent, and E is the enhancement factor. 231 267 232 268 If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we … … 238 274 239 275 /*Intermediary: */ 240 IssmDouble B,D=0., n;276 IssmDouble B,D=0.,E=1.,n; 241 277 242 278 /*Get B and n*/ … … 247 283 _assert_(D>=0. && D<1.); 248 284 } 285 if(this->isenhanced){ 286 E=GetE(); 287 _assert_(E>0.); 288 } 249 289 250 290 if (n==1.){ 251 /*Linear Viscous behavior (Newtonian fluid) viscosity=B/2 : */252 viscosity=(1.-D)*B/ 2.;291 /*Linear Viscous behavior (Newtonian fluid) viscosity=B/2E: */ 292 viscosity=(1.-D)*B/(2.*E); 253 293 } 254 294 else{ … … 262 302 263 303 else{ 264 viscosity=(1.-D)*B/(2.*pow( eps_eff,(n-1.)/n));304 viscosity=(1.-D)*B/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n)); 265 305 } 266 306 } … … 277 317 (1-D) B 278 318 viscosity= ------------------------- 279 2 eps_eff ^[(n-1)/n] 280 281 where B the flow law parameter, eps_eff is the effective strain rate and n the flow law exponent. 319 2 E^[1/n] eps_eff ^[(n-1)/n] 320 321 where B the flow law parameter, eps_eff is the effective strain rate, n the flow law exponent, 322 and E is the enhancement factor. 282 323 283 324 If eps_eff = 0 , it means this is the first time SystemMatrices is being run, and we … … 289 330 290 331 /*Intermediary: */ 291 IssmDouble B,D=0., n;332 IssmDouble B,D=0.,E=1.,n; 292 333 293 334 /*Get B and n*/ … … 298 339 _assert_(D>=0. && D<1.); 299 340 } 341 if(this->isenhanced){ 342 E=GetEbar(); 343 _assert_(E>0.); 344 } 300 345 301 346 if (n==1.){ 302 /*Linear Viscous behavior (Newtonian fluid) viscosity=B/2 : */303 viscosity=(1.-D)*B/ 2.;347 /*Linear Viscous behavior (Newtonian fluid) viscosity=B/2E: */ 348 viscosity=(1.-D)*B/(2.*E); 304 349 } 305 350 else{ … … 312 357 313 358 else{ 314 viscosity=(1.-D)*B/(2.*pow( eps_eff,(n-1.)/n));359 viscosity=(1.-D)*B/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n)); 315 360 } 316 361 } … … 475 520 476 521 /*Intermediary: */ 477 IssmDouble D=0., n;522 IssmDouble D=0.,E=1.,n; 478 523 479 524 /*Get B and n*/ … … 483 528 _assert_(D>=0. && D<1.); 484 529 } 530 if(this->isenhanced){ 531 E=GetE(); 532 _assert_(E>0.); 533 } 485 534 486 535 if(n==1.){ 487 /*Linear Viscous behavior (Newtonian fluid) dmudB=B/2 : */488 dmudB=(1.-D)/ 2.;536 /*Linear Viscous behavior (Newtonian fluid) dmudB=B/2E: */ 537 dmudB=(1.-D)/(2.*E); 489 538 } 490 539 else{ 491 540 if(eps_eff==0.) dmudB = 0.; 492 else dmudB = (1.-D)/(2.*pow( eps_eff,(n-1.)/n));541 else dmudB = (1.-D)/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n)); 493 542 } 494 543 … … 503 552 504 553 /*Intermediary: */ 505 IssmDouble n,B ;554 IssmDouble n,B,E=1.; 506 555 507 556 /*Get B and n*/ … … 509 558 B=GetBbar(); 510 559 _assert_(this->isdamaged); 560 if(this->isenhanced){ 561 E=GetE(); 562 _assert_(E>0.); 563 } 511 564 512 565 if(n==1.){ 513 /*Linear Viscous behavior (Newtonian fluid) dmudB=B/2 : */514 dmudD=-B/ 2.;566 /*Linear Viscous behavior (Newtonian fluid) dmudB=B/2E: */ 567 dmudD=-B/(2.*E); 515 568 } 516 569 else{ 517 570 if(eps_eff==0.) dmudD = 0.; 518 else dmudD = -B/(2.*pow( eps_eff,(n-1.)/n));571 else dmudD = -B/(2.*pow(E,1./n)*pow(eps_eff,(n-1.)/n)); 519 572 } 520 573 … … 636 689 IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/ 637 690 IssmDouble epsilon2d[2];/* epsilon=[exx,exy]; */ 638 IssmDouble eps_eff ;691 IssmDouble eps_eff,E=1.0; 639 692 640 693 if(dim==3){ -
issm/trunk-jpl/src/c/classes/Materials/Matice.h
r20827 r21389 27 27 int mid; 28 28 bool isdamaged; 29 bool isenhanced; 29 30 Hook *helement; 30 31 Element *element; … … 70 71 IssmDouble GetD(); 71 72 IssmDouble GetDbar(); 73 IssmDouble GetE(); 74 IssmDouble GetEbar(); 72 75 IssmDouble GetN(); 73 76 bool IsDamage(); 77 bool IsEnhanced(); 74 78 void ResetHooks(); 75 79 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters); -
issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
r20827 r21389 82 82 case MaticeEnum: 83 83 case MatdamageiceEnum: 84 case MatenhancediceEnum: 84 85 case MatestarEnum: 85 86 iomodel->FindConstant(&this->rho_ice,"md.materials.rho_ice"); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r21381 r21389 56 56 case 2: 57 57 elements->InputDuplicate(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 58 break; 59 case 3: 60 break; 61 default: 62 _error_("Mesh not supported yet"); 63 } 64 break; 65 case MatenhancediceEnum: 66 iomodel->FetchDataToInput(elements,"md.materials.rheology_B",MaterialsRheologyBEnum); 67 iomodel->FetchDataToInput(elements,"md.materials.rheology_n",MaterialsRheologyNEnum); 68 iomodel->FetchDataToInput(elements,"md.materials.rheology_E",MaterialsRheologyEEnum); 69 for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel)); 70 switch(iomodel->domaindim){ 71 case 2: 72 elements->InputDuplicate(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 73 elements->InputDuplicate(MaterialsRheologyEEnum,MaterialsRheologyEbarEnum); 58 74 break; 59 75 case 3: -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r21381 r21389 214 214 MaterialsRheologyLawEnum, 215 215 MaterialsRheologyNEnum, 216 MaterialsRheologyEEnum, 217 MaterialsRheologyEbarEnum, 216 218 MaterialsRheologyEcEnum, 217 219 MaterialsRheologyEcbarEnum, … … 828 830 MaticeEnum, 829 831 MatdamageiceEnum, 832 MatenhancediceEnum, 830 833 MatestarEnum, 831 834 MatparEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r21385 r21389 220 220 case MaterialsRheologyLawEnum : return "MaterialsRheologyLaw"; 221 221 case MaterialsRheologyNEnum : return "MaterialsRheologyN"; 222 case MaterialsRheologyEEnum : return "MaterialsRheologyE"; 223 case MaterialsRheologyEbarEnum : return "MaterialsRheologyEbar"; 222 224 case MaterialsRheologyEcEnum : return "MaterialsRheologyEc"; 223 225 case MaterialsRheologyEcbarEnum : return "MaterialsRheologyEcbar"; … … 803 805 case MaticeEnum : return "Matice"; 804 806 case MatdamageiceEnum : return "Matdamageice"; 807 case MatenhancediceEnum : return "Matenhancedice"; 805 808 case MatestarEnum : return "Matestar"; 806 809 case MatparEnum : return "Matpar"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r21385 r21389 223 223 else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum; 224 224 else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum; 225 else if (strcmp(name,"MaterialsRheologyE")==0) return MaterialsRheologyEEnum; 226 else if (strcmp(name,"MaterialsRheologyEbar")==0) return MaterialsRheologyEbarEnum; 225 227 else if (strcmp(name,"MaterialsRheologyEc")==0) return MaterialsRheologyEcEnum; 226 228 else if (strcmp(name,"MaterialsRheologyEcbar")==0) return MaterialsRheologyEcbarEnum; … … 258 260 else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum; 259 261 else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum; 260 else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum;261 else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum; 265 if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum; 266 else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum; 267 else if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum; 266 268 else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum; 267 269 else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum; … … 381 383 else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum; 382 384 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 383 else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;384 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum; 388 if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum; 389 else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum; 390 else if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum; 389 391 else if (strcmp(name,"SmbTa")==0) return SmbTaEnum; 390 392 else if (strcmp(name,"SmbV")==0) return SmbVEnum; … … 504 506 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum; 505 507 else if (strcmp(name,"Vx")==0) return VxEnum; 506 else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;507 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Vy")==0) return VyEnum; 511 if (strcmp(name,"VxPicard")==0) return VxPicardEnum; 512 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 513 else if (strcmp(name,"Vy")==0) return VyEnum; 512 514 else if (strcmp(name,"VyPicard")==0) return VyPicardEnum; 513 515 else if (strcmp(name,"Vz")==0) return VzEnum; … … 627 629 else if (strcmp(name,"Outputdefinition46")==0) return Outputdefinition46Enum; 628 630 else if (strcmp(name,"Outputdefinition47")==0) return Outputdefinition47Enum; 629 else if (strcmp(name,"Outputdefinition48")==0) return Outputdefinition48Enum;630 else if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum; 634 if (strcmp(name,"Outputdefinition48")==0) return Outputdefinition48Enum; 635 else if (strcmp(name,"Outputdefinition49")==0) return Outputdefinition49Enum; 636 else if (strcmp(name,"Outputdefinition50")==0) return Outputdefinition50Enum; 635 637 else if (strcmp(name,"Outputdefinition51")==0) return Outputdefinition51Enum; 636 638 else if (strcmp(name,"Outputdefinition52")==0) return Outputdefinition52Enum; … … 750 752 else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum; 751 753 else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum; 752 else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;753 else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; 757 if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum; 758 else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum; 759 else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; 758 760 else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum; 759 761 else if (strcmp(name,"LevelsetReinitFrequency")==0) return LevelsetReinitFrequencyEnum; … … 821 823 else if (strcmp(name,"Matice")==0) return MaticeEnum; 822 824 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum; 825 else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum; 823 826 else if (strcmp(name,"Matestar")==0) return MatestarEnum; 824 827 else if (strcmp(name,"Matpar")==0) return MatparEnum; … … 872 875 else if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum; 873 876 else if (strcmp(name,"L2ProjectionEPLAnalysis")==0) return L2ProjectionEPLAnalysisEnum; 874 else if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum;875 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;876 else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum; 880 if (strcmp(name,"L2ProjectionBaseAnalysis")==0) return L2ProjectionBaseAnalysisEnum; 881 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 882 else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum; 883 else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum; 881 884 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 882 885 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r21049 r21389 86 86 case 2: return MatestarEnum; 87 87 case 3: return MaticeEnum; 88 case 4: return MatenhancediceEnum; 88 89 default: _error_("Marshalled materials code \""<<enum_in<<"\" not supported yet"); 89 90 }
Note:
See TracChangeset
for help on using the changeset viewer.