Changeset 14769
- Timestamp:
- 04/26/13 15:33:39 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 15 added
- 18 edited
- 6 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
r14757 r14769 103 103 HydrologydcEplTransmitivityEnum, 104 104 HydrologydcIsefficientlayerEnum, 105 HydrologyLayerEnum, 106 HydrologySedimentEnum, 107 HydrologyEfficientEnum, 108 HydrologySedimentKmaxEnum, 105 109 IndependentObjectEnum, 106 110 InversionControlParametersEnum, … … 274 278 FlaimAnalysisEnum, 275 279 FlaimSolutionEnum, 276 HydrologyAnalysisEnum, 280 HydrologyShreveAnalysisEnum, 281 HydrologyDCInefficientAnalysisEnum, 282 HydrologyDCEfficientAnalysisEnum, 277 283 HydrologySolutionEnum, 278 284 MeltingAnalysisEnum, -
issm/trunk-jpl/src/c/Makefile.am
r14739 r14769 454 454 #}}} 455 455 #Hydrology sources {{{ 456 hydrology_sources = ./modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp\ 457 ./modules/ModelProcessorx/Hydrology/CreateNodesHydrology.cpp\ 458 ./modules/ModelProcessorx/Hydrology/CreateConstraintsHydrology.cpp\ 459 ./modules/ModelProcessorx/Hydrology/CreateLoadsHydrology.cpp \ 460 ./modules/ModelProcessorx/Hydrology/CreateParametersHydrology.cpp \ 461 ./solutions/hydrology_core.cpp 456 hydrology_sources = ./modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp\ 457 ./modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp\ 458 ./modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp\ 459 ./modules/ModelProcessorx/HydrologyShreve/CreateLoadsHydrologyShreve.cpp \ 460 ./modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp \ 461 ./modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp\ 462 ./modules/ModelProcessorx/HydrologyDCInefficient/CreateNodesHydrologyDCInefficient.cpp\ 463 ./modules/ModelProcessorx/HydrologyDCInefficient/CreateConstraintsHydrologyDCInefficient.cpp\ 464 ./modules/ModelProcessorx/HydrologyDCInefficient/CreateLoadsHydrologyDCInefficient.cpp \ 465 ./modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp \ 466 ./modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp\ 467 ./modules/ModelProcessorx/HydrologyDCEfficient/CreateNodesHydrologyDCEfficient.cpp\ 468 ./modules/ModelProcessorx/HydrologyDCEfficient/CreateConstraintsHydrologyDCEfficient.cpp\ 469 ./modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp \ 470 ./modules/ModelProcessorx/HydrologyDCEfficient/CreateParametersHydrologyDCEfficient.cpp \ 471 ./solutions/hydrology_core.cpp\ 472 ./solvers/solver_hydro_nonlinear.cpp 462 473 #}}} 463 474 #Diagnostic sources {{{ -
issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
r14765 r14769 252 252 break; 253 253 #ifdef _HAVE_HYDROLOGY_ 254 case HydrologyAnalysisEnum: 255 Ke=CreateKMatrixHydrology(); 254 case HydrologyShreveAnalysisEnum: 255 Ke=CreateKMatrixHydrologyShreve(); 256 break; 257 case HydrologyDCInefficientAnalysisEnum: 258 Ke=CreateKMatrixHydrologyDCInefficient(); 259 break; 260 case HydrologyDCEfficientAnalysisEnum: 261 Ke=CreateKMatrixHydrologyDCEfficient(); 256 262 break; 257 263 #endif … … 609 615 break; 610 616 #ifdef _HAVE_HYDROLOGY_ 611 case HydrologyAnalysisEnum: 612 pe=CreatePVectorHydrology(); 617 case HydrologyShreveAnalysisEnum: 618 pe=CreatePVectorHydrologyShreve(); 619 break; 620 case HydrologyDCInefficientAnalysisEnum: 621 pe=CreatePVectorHydrologyDCInefficient(); 622 break; 623 case HydrologyDCEfficientAnalysisEnum: 624 pe=CreatePVectorHydrologyDCEfficient(); 613 625 break; 614 626 #endif … … 1383 1395 #endif 1384 1396 #ifdef _HAVE_HYDROLOGY_ 1385 case Hydrology AnalysisEnum:1386 GetSolutionFromInputsHydrology (solution);1397 case HydrologyShreveAnalysisEnum: 1398 GetSolutionFromInputsHydrologyShreve(solution); 1387 1399 break; 1388 1400 #endif … … 1721 1733 #ifdef _HAVE_DIAGNOSTIC_ 1722 1734 case DiagnosticHorizAnalysisEnum: 1723 InputUpdateFromSolutionDiagnosticHoriz( 1735 InputUpdateFromSolutionDiagnosticHoriz(solution); 1724 1736 break; 1725 1737 case DiagnosticHutterAnalysisEnum: 1726 InputUpdateFromSolutionDiagnosticHoriz( 1738 InputUpdateFromSolutionDiagnosticHoriz(solution); 1727 1739 break; 1728 1740 #endif 1729 1741 #ifdef _HAVE_CONTROL_ 1730 1742 case AdjointHorizAnalysisEnum: 1731 InputUpdateFromSolutionAdjointHoriz( 1743 InputUpdateFromSolutionAdjointHoriz(solution); 1732 1744 break; 1733 1745 case AdjointBalancethicknessAnalysisEnum: 1734 InputUpdateFromSolutionAdjointBalancethickness( 1746 InputUpdateFromSolutionAdjointBalancethickness(solution); 1735 1747 break; 1736 1748 #endif 1737 1749 #ifdef _HAVE_HYDROLOGY_ 1738 case HydrologyAnalysisEnum: 1739 InputUpdateFromSolutionHydrology(solution); 1740 break ; 1750 case HydrologyShreveAnalysisEnum: 1751 InputUpdateFromSolutionHydrologyShreve(solution); 1752 break; 1753 case HydrologyDCInefficientAnalysisEnum: 1754 InputUpdateFromSolutionHydrologyDCInefficient(solution); 1755 break; 1756 case HydrologyDCEfficientAnalysisEnum: 1757 InputUpdateFromSolutionHydrologyDCEfficient(solution); 1758 break; 1741 1759 #endif 1742 1760 #ifdef _HAVE_BALANCED_ … … 5802 5820 } 5803 5821 /*}}}*/ 5804 /*FUNCTION Tria::CreateKMatrixHydrology{{{*/ 5805 ElementMatrix* Tria::CreateKMatrixHydrology(void){ 5806 5807 int hydrology_model; 5808 bool isefficientlayer; 5809 parameters->FindParam(&hydrology_model,HydrologyEnum); 5810 5811 5812 switch(hydrology_model){ 5813 case HydrologyshreveEnum: 5814 return CreateKMatrixHydrologyShreve(); 5815 case HydrologydcEnum: 5816 parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 5817 if(!isefficientlayer) 5818 return CreateKMatrixHydrologyDCsediment(); 5819 else if(isefficientlayer) 5820 return CreateKMatrixHydrologyDCepl(); 5821 default: 5822 _error_("Approximation " << EnumToStringx(hydrology_model) << " not supported yet"); 5823 } 5824 5825 } 5826 /*}}}*/ 5827 /*FUNCTION Tria::CreateKMatrixHydrologyShreve(void){{{*/ 5822 /*FUNCTION Tria::CreateKMatrixHydrologyShreve{{{*/ 5828 5823 ElementMatrix* Tria::CreateKMatrixHydrologyShreve(void){ 5829 5824 … … 5881 5876 5882 5877 TripleMultiply( &L[0],1,numdof,1, 5883 5884 5885 5878 &DL_scalar,1,1,0, 5879 &L[0],1,numdof,0, 5880 &Ke->values[0],1); 5886 5881 5887 5882 GetBPrognostic(&B[0][0], &xyz_list[0][0], gauss); … … 5929 5924 } 5930 5925 /*}}}*/ 5931 /*FUNCTION Tria::CreateKMatrixHydrologyDC sediment{{{*/5932 ElementMatrix* Tria::CreateKMatrixHydrologyDC sediment(void){5926 /*FUNCTION Tria::CreateKMatrixHydrologyDCInefficient{{{*/ 5927 ElementMatrix* Tria::CreateKMatrixHydrologyDCInefficient(void){ 5933 5928 5934 5929 /*constants: */ … … 5990 5985 } 5991 5986 /*}}}*/ 5992 /*FUNCTION Tria::CreateKMatrixHydrologyDC epl{{{*/5993 ElementMatrix* Tria::CreateKMatrixHydrologyDC epl(void){5987 /*FUNCTION Tria::CreateKMatrixHydrologyDCEfficient{{{*/ 5988 ElementMatrix* Tria::CreateKMatrixHydrologyDCEfficient(void){ 5994 5989 5995 5990 /*constants: */ … … 6051 6046 } 6052 6047 /*}}}*/ 6053 /*FUNCTION Tria::CreatePVectorHydrology{{{*/6054 ElementVector* Tria::CreatePVectorHydrology(void){6055 6056 int hydrology_model;6057 bool isefficientlayer;6058 parameters->FindParam(&hydrology_model,HydrologyEnum);6059 6060 switch(hydrology_model){6061 case HydrologyshreveEnum:6062 return CreatePVectorHydrologyShreve();6063 case HydrologydcEnum:6064 parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);6065 if(!isefficientlayer)6066 return CreatePVectorHydrologyDCsediment();6067 else if(isefficientlayer)6068 return CreatePVectorHydrologyDCepl();6069 default:6070 _error_("Approximation " << EnumToStringx(hydrology_model) << " not supported yet");6071 }6072 6073 }6074 /*}}}*/6075 6048 /*FUNCTION Tria::CreatePVectorHydrologyShreve {{{*/ 6076 6049 ElementVector* Tria::CreatePVectorHydrologyShreve(void){ … … 6122 6095 } 6123 6096 /*}}}*/ 6124 /*FUNCTION Tria::CreatePVectorHydrologyDC sediment {{{*/6125 ElementVector* Tria::CreatePVectorHydrologyDC sediment(void){6097 /*FUNCTION Tria::CreatePVectorHydrologyDCInefficient {{{*/ 6098 ElementVector* Tria::CreatePVectorHydrologyDCInefficient(void){ 6126 6099 6127 6100 /*Constants*/ … … 6179 6152 } 6180 6153 /*}}}*/ 6181 /*FUNCTION Tria::CreatePVectorHydrologyDC epl{{{*/6182 ElementVector* Tria::CreatePVectorHydrologyDC epl(void){6154 /*FUNCTION Tria::CreatePVectorHydrologyDCEfficient {{{*/ 6155 ElementVector* Tria::CreatePVectorHydrologyDCEfficient(void){ 6183 6156 6184 6157 /*Constants*/ … … 6236 6209 } 6237 6210 /*}}}*/ 6238 /*FUNCTION Tria::GetSolutionFromInputsHydrology {{{*/6239 void Tria::GetSolutionFromInputsHydrology (Vector<IssmDouble>* solution){6211 /*FUNCTION Tria::GetSolutionFromInputsHydrologyShreve{{{*/ 6212 void Tria::GetSolutionFromInputsHydrologyShreve(Vector<IssmDouble>* solution){ 6240 6213 6241 6214 const int numdof=NDOF1*NUMVERTICES; 6242 6215 6243 int i;6244 int * doflist=NULL;6245 IssmDouble 6246 IssmDouble 6247 GaussTria * gauss=NULL;6216 int i; 6217 int *doflist = NULL; 6218 IssmDouble watercolumn; 6219 IssmDouble values[numdof]; 6220 GaussTria *gauss = NULL; 6248 6221 6249 6222 /*Get dof list: */ … … 6270 6243 delete gauss; 6271 6244 xDelete<int>(doflist); 6272 }6273 /*}}}*/6274 /*FUNCTION Tria::InputUpdateFromSolutionHydrology{{{*/6275 void Tria::InputUpdateFromSolutionHydrology(IssmDouble* solution){6276 6277 int hydrology_model;6278 parameters->FindParam(&hydrology_model,HydrologyEnum);6279 6280 switch(hydrology_model){6281 case HydrologyshreveEnum:6282 return InputUpdateFromSolutionHydrologyShreve(solution);6283 case HydrologydcEnum:6284 return InputUpdateFromSolutionHydrologyDC(solution);6285 default:6286 _error_("Approximation " << EnumToStringx(hydrology_model) << " not supported yet");6287 }6288 6245 } 6289 6246 /*}}}*/ … … 6313 6270 } 6314 6271 /*}}}*/ 6315 /*FUNCTION Tria::InputUpdateFromSolutionHydrologyDC {{{*/6316 void Tria::InputUpdateFromSolutionHydrologyDC (IssmDouble* solution){6272 /*FUNCTION Tria::InputUpdateFromSolutionHydrologyDCInefficient{{{*/ 6273 void Tria::InputUpdateFromSolutionHydrologyDCInefficient(IssmDouble* solution){ 6317 6274 6318 6275 /*Intermediaries*/ … … 6332 6289 /*Add input to the element: */ 6333 6290 this->inputs->AddInput(new TriaP1Input(SedimentHeadEnum,values)); 6291 6292 /*Free ressources:*/ 6293 xDelete<int>(doflist); 6294 } 6295 /*}}}*/ 6296 /*FUNCTION Tria::InputUpdateFromSolutionHydrologyDCEfficient{{{*/ 6297 void Tria::InputUpdateFromSolutionHydrologyDCEfficient(IssmDouble* solution){ 6298 6299 /*Intermediaries*/ 6300 const int numdof = NDOF1 *NUMVERTICES; 6301 int *doflist = NULL; 6302 IssmDouble values[numdof]; 6303 6304 /*Get dof list: */ 6305 GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 6306 6307 /*Use the dof list to index into the solution vector: */ 6308 for(int i=0;i<numdof;i++){ 6309 values[i]=solution[doflist[i]]; 6310 if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector"); 6311 } 6312 6313 /*Add input to the element: */ 6314 this->inputs->AddInput(new TriaP1Input(EplHeadEnum,values)); 6334 6315 6335 6316 /*Free ressources:*/ -
issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h
r14761 r14769 239 239 240 240 #ifdef _HAVE_HYDROLOGY_ 241 ElementMatrix* CreateKMatrixHydrology(void);242 241 ElementMatrix* CreateKMatrixHydrologyShreve(void); 243 ElementMatrix* CreateKMatrixHydrologyDCsediment(void); 244 ElementMatrix* CreateKMatrixHydrologyDCepl(void); 245 ElementVector* CreatePVectorHydrology(void); 242 ElementMatrix* CreateKMatrixHydrologyDCInefficient(void); 243 ElementMatrix* CreateKMatrixHydrologyDCEfficient(void); 246 244 ElementVector* CreatePVectorHydrologyShreve(void); 247 ElementVector* CreatePVectorHydrologyDCsediment(void); 248 ElementVector* CreatePVectorHydrologyDCepl(void); 245 ElementVector* CreatePVectorHydrologyDCInefficient(void); 246 ElementVector* CreatePVectorHydrologyDCEfficient(void); 247 void GetSolutionFromInputsHydrologyShreve(Vector<IssmDouble>* solution); 249 248 void CreateHydrologyWaterVelocityInput(void); 250 void GetSolutionFromInputsHydrology(Vector<IssmDouble>* solution);251 249 void InputUpdateFromSolutionHydrology(IssmDouble* solution); 252 250 void InputUpdateFromSolutionHydrologyShreve(IssmDouble* solution); 253 void InputUpdateFromSolutionHydrologyDC(IssmDouble* solution); 251 void InputUpdateFromSolutionHydrologyDC(IssmDouble* solution); 252 void InputUpdateFromSolutionHydrologyDCInefficient(IssmDouble* solution); 253 void InputUpdateFromSolutionHydrologyDCEfficient(IssmDouble* solution); 254 254 #endif 255 255 #ifdef _HAVE_BALANCED_ -
issm/trunk-jpl/src/c/classes/objects/Loads/Pengrid.cpp
r14704 r14769 246 246 break; 247 247 #endif 248 #ifdef _HAVE_HYDROLOGY_ 249 case HydrologyDCInefficientAnalysisEnum: 250 Ke=PenaltyCreateKMatrixHydrologyDCInefficient(kmax); 251 break; 252 #endif 248 253 default: 249 254 _error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet"); … … 274 279 break; 275 280 case DiagnosticHorizAnalysisEnum: case AdjointHorizAnalysisEnum: 281 break; 282 #endif 283 #ifdef _HAVE_HYDROLOGY_ 284 case HydrologyDCInefficientAnalysisEnum: 285 pe=PenaltyCreatePVectorHydrologyDCInefficient(kmax); 276 286 break; 277 287 #endif … … 429 439 return; 430 440 } 441 #ifdef _HAVE_THERMAL_ 431 442 else if (analysis_type==ThermalAnalysisEnum){ 432 443 ConstraintActivateThermal(punstable); … … 436 447 return; 437 448 } 449 #endif 450 #ifdef _HAVE_HYDROLOGY_ 451 else if (analysis_type==HydrologyDCInefficientAnalysisEnum){ 452 ConstraintActivateHydrologyDCInefficient(punstable); 453 return; 454 } 455 #endif 438 456 else{ 439 457 _error_("analysis: " << EnumToStringx(analysis_type) << " not supported yet"); … … 442 460 } 443 461 /*}}}*/ 462 #ifdef _HAVE_DIAGNOSTIC_ 463 /*FUNCTION Pengrid::PenaltyCreateKMatrixDiagnosticStokes {{{*/ 464 ElementMatrix* Pengrid::PenaltyCreateKMatrixDiagnosticStokes(IssmDouble kmax){ 465 466 const int numdof = NUMVERTICES *NDOF4; 467 IssmDouble slope[2]; 468 IssmDouble penalty_offset; 469 int approximation; 470 471 Penta* penta=(Penta*)element; 472 473 /*Initialize Element vector and return if necessary*/ 474 penta->inputs->GetInputValue(&approximation,ApproximationEnum); 475 if(approximation!=StokesApproximationEnum && approximation!=PattynStokesApproximationEnum) return NULL; 476 ElementMatrix* Ke=new ElementMatrix(&node,1,this->parameters,StokesApproximationEnum); 477 478 /*Retrieve all inputs and parameters*/ 479 parameters->FindParam(&penalty_offset,DiagnosticPenaltyFactorEnum); 480 penta->GetInputValue(&slope[0],node,BedSlopeXEnum); 481 penta->GetInputValue(&slope[1],node,BedSlopeYEnum); 482 483 /*Create elementary matrix: add penalty to constrain wb (wb=ub*db/dx+vb*db/dy)*/ 484 Ke->values[2*NDOF4+0]=-slope[0]*kmax*pow((IssmDouble)10.0,penalty_offset); 485 Ke->values[2*NDOF4+1]=-slope[1]*kmax*pow((IssmDouble)10.0,penalty_offset); 486 Ke->values[2*NDOF4+2]= kmax*pow((IssmDouble)10,penalty_offset); 487 488 /*Transform Coordinate System*/ 489 TransformStiffnessMatrixCoord(Ke,&node,NUMVERTICES,XYZPEnum); 490 491 /*Clean up and return*/ 492 return Ke; 493 } 494 /*}}}*/ 495 #endif 496 #ifdef _HAVE_THERMAL_ 444 497 /*FUNCTION Pengrid::ConstraintActivateThermal {{{*/ 445 498 void Pengrid::ConstraintActivateThermal(int* punstable){ … … 510 563 } 511 564 /*}}}*/ 512 #ifdef _HAVE_DIAGNOSTIC_513 /*FUNCTION Pengrid::PenaltyCreateKMatrixDiagnosticStokes {{{*/514 ElementMatrix* Pengrid::PenaltyCreateKMatrixDiagnosticStokes(IssmDouble kmax){515 516 const int numdof = NUMVERTICES *NDOF4;517 IssmDouble slope[2];518 IssmDouble penalty_offset;519 int approximation;520 521 Penta* penta=(Penta*)element;522 523 /*Initialize Element vector and return if necessary*/524 penta->inputs->GetInputValue(&approximation,ApproximationEnum);525 if(approximation!=StokesApproximationEnum && approximation!=PattynStokesApproximationEnum) return NULL;526 ElementMatrix* Ke=new ElementMatrix(&node,1,this->parameters,StokesApproximationEnum);527 528 /*Retrieve all inputs and parameters*/529 parameters->FindParam(&penalty_offset,DiagnosticPenaltyFactorEnum);530 penta->GetInputValue(&slope[0],node,BedSlopeXEnum);531 penta->GetInputValue(&slope[1],node,BedSlopeYEnum);532 533 /*Create elementary matrix: add penalty to constrain wb (wb=ub*db/dx+vb*db/dy)*/534 Ke->values[2*NDOF4+0]=-slope[0]*kmax*pow((IssmDouble)10.0,penalty_offset);535 Ke->values[2*NDOF4+1]=-slope[1]*kmax*pow((IssmDouble)10.0,penalty_offset);536 Ke->values[2*NDOF4+2]= kmax*pow((IssmDouble)10,penalty_offset);537 538 /*Transform Coordinate System*/539 TransformStiffnessMatrixCoord(Ke,&node,NUMVERTICES,XYZPEnum);540 541 /*Clean up and return*/542 return Ke;543 }544 /*}}}*/545 #endif546 #ifdef _HAVE_THERMAL_547 565 /*FUNCTION Pengrid::PenaltyCreateKMatrixMelting {{{*/ 548 566 ElementMatrix* Pengrid::PenaltyCreateKMatrixMelting(IssmDouble kmax){ … … 665 683 /*}}}*/ 666 684 #endif 685 #ifdef _HAVE_HYDROLOGY_ 686 /*FUNCTION Pengrid::ConstraintActivateHydrologyDCInefficient{{{*/ 687 void Pengrid::ConstraintActivateHydrologyDCInefficient(int* punstable){ 688 689 // The penalty is stable if it doesn't change during two consecutive iterations. 690 int found = 0; 691 const int numnodes = 1; 692 IssmDouble pressure; 693 IssmDouble h; 694 IssmDouble h_max; 695 int new_active; 696 int unstable = 0; 697 int reset_penalties = 0; 698 int penalty_lock; 699 700 /*check that pengrid is not a clone (penalty to be added only once)*/ 701 if(node->IsClone()){ 702 unstable=0; 703 *punstable=unstable; 704 return; 705 } 706 707 /*Get sediment water head h*/ 708 element->GetInputValue(&h,node,SedimentHeadEnum); 709 h_max=10000; 710 711 if (h>h_max) 712 new_active=1; 713 else 714 new_active=0; 715 716 if(this->active==new_active) 717 unstable=0; 718 else 719 unstable=1; 720 721 /*Set penalty flag*/ 722 this->active=new_active; 723 724 /*Assign output pointers:*/ 725 *punstable=unstable; 726 } 727 /*}}}*/ 728 /*FUNCTION Pengrid::PenaltyCreateKMatrixHydrologyDCInefficient {{{*/ 729 ElementMatrix* Pengrid::PenaltyCreateKMatrixHydrologyDCInefficient(IssmDouble kmax){ 730 731 const int numdof=NUMVERTICES*NDOF1; 732 IssmDouble penalty_factor = 3.; 733 734 /*Initialize Element matrix and return if necessary*/ 735 if(!this->active) return NULL; 736 ElementMatrix* Ke=new ElementMatrix(&node,NUMVERTICES,this->parameters); 737 738 Ke->values[0]=kmax*pow(10.,penalty_factor); 739 740 /*Clean up and return*/ 741 return Ke; 742 } 743 /*}}}*/ 744 /*FUNCTION Pengrid::PenaltyCreatePVectorHydrologyDCInefficient {{{*/ 745 ElementVector* Pengrid::PenaltyCreatePVectorHydrologyDCInefficient(IssmDouble kmax){ 746 747 const int numdof=NUMVERTICES*NDOF1; 748 IssmDouble h_max; 749 IssmDouble penalty_factor=3.; 750 751 /*Initialize Element matrix and return if necessary*/ 752 if(!this->active) return NULL; 753 ElementVector* pe=new ElementVector(&node,1,this->parameters); 754 755 /*Get h_max*/ 756 h_max = 10000.; 757 758 pe->values[0]=kmax*pow(10.,penalty_factor)*h_max; 759 760 /*Clean up and return*/ 761 return pe; 762 } 763 /*}}}*/ 764 #endif 667 765 /*FUNCTION Pengrid::ResetConstraint {{{*/ 668 766 void Pengrid::ResetConstraint(void){ -
issm/trunk-jpl/src/c/classes/objects/Loads/Pengrid.h
r13925 r14769 7 7 /*Headers:*/ 8 8 /*{{{*/ 9 #ifdef HAVE_CONFIG_H 10 #include <config.h> 11 #else 12 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!" 13 #endif 9 14 #include "./Load.h" 10 15 class Hook; … … 90 95 ElementVector* PenaltyCreatePVectorThermal(IssmDouble kmax); 91 96 ElementVector* PenaltyCreatePVectorMelting(IssmDouble kmax); 97 void ConstraintActivateThermal(int* punstable); 98 #endif 99 #ifdef _HAVE_HYDROLOGY_ 100 ElementMatrix* PenaltyCreateKMatrixHydrologyDCInefficient(IssmDouble kmax); 101 ElementVector* PenaltyCreatePVectorHydrologyDCInefficient(IssmDouble kmax); 102 void ConstraintActivateHydrologyDCInefficient(int* punstable); 92 103 #endif 93 104 void ConstraintActivate(int* punstable); 94 void ConstraintActivateThermal(int* punstable);95 105 void UpdateInputs(IssmDouble* solution); 96 106 void ResetConstraint(void); -
issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
r14757 r14769 108 108 case HydrologydcEplTransmitivityEnum : return "HydrologydcEplTransmitivity"; 109 109 case HydrologydcIsefficientlayerEnum : return "HydrologydcIsefficientlayer"; 110 case HydrologyLayerEnum : return "HydrologyLayer"; 111 case HydrologySedimentEnum : return "HydrologySediment"; 112 case HydrologyEfficientEnum : return "HydrologyEfficient"; 113 case HydrologySedimentKmaxEnum : return "HydrologySedimentKmax"; 110 114 case IndependentObjectEnum : return "IndependentObject"; 111 115 case InversionControlParametersEnum : return "InversionControlParameters"; … … 277 281 case FlaimAnalysisEnum : return "FlaimAnalysis"; 278 282 case FlaimSolutionEnum : return "FlaimSolution"; 279 case HydrologyAnalysisEnum : return "HydrologyAnalysis"; 283 case HydrologyShreveAnalysisEnum : return "HydrologyShreveAnalysis"; 284 case HydrologyDCInefficientAnalysisEnum : return "HydrologyDCInefficientAnalysis"; 285 case HydrologyDCEfficientAnalysisEnum : return "HydrologyDCEfficientAnalysis"; 280 286 case HydrologySolutionEnum : return "HydrologySolution"; 281 287 case MeltingAnalysisEnum : return "MeltingAnalysis"; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp
r14588 r14769 56 56 57 57 #ifdef _HAVE_HYDROLOGY_ 58 case HydrologyAnalysisEnum: 59 CreateNodesHydrology(pnodes, iomodel); 60 CreateConstraintsHydrology(pconstraints,iomodel); 61 CreateLoadsHydrology(ploads,iomodel); 62 UpdateElementsHydrology(elements,iomodel,analysis_counter,analysis_type); 58 case HydrologyShreveAnalysisEnum: 59 CreateNodesHydrologyShreve(pnodes, iomodel); 60 CreateConstraintsHydrologyShreve(pconstraints,iomodel); 61 CreateLoadsHydrologyShreve(ploads,iomodel); 62 UpdateElementsHydrologyShreve(elements,iomodel,analysis_counter,analysis_type); 63 break; 64 case HydrologyDCInefficientAnalysisEnum: 65 CreateNodesHydrologyDCInefficient(pnodes, iomodel); 66 CreateConstraintsHydrologyDCInefficient(pconstraints,iomodel); 67 CreateLoadsHydrologyDCInefficient(ploads,iomodel); 68 UpdateElementsHydrologyDCInefficient(elements,iomodel,analysis_counter,analysis_type); 69 break; 70 case HydrologyDCEfficientAnalysisEnum: 71 CreateNodesHydrologyDCEfficient(pnodes, iomodel); 72 CreateConstraintsHydrologyDCEfficient(pconstraints,iomodel); 73 CreateLoadsHydrologyDCEfficient(ploads,iomodel); 74 UpdateElementsHydrologyDCEfficient(elements,iomodel,analysis_counter,analysis_type); 63 75 break; 64 76 #endif -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r14743 r14769 226 226 /*Solution specific parameters (FIXME: extend to other params)*/ 227 227 #ifdef _HAVE_HYDROLOGY_ 228 CreateParametersHydrology(¶meters,iomodel,solution_type,analysis_type); 228 CreateParametersHydrologyShreve(¶meters,iomodel,solution_type,analysis_type); 229 CreateParametersHydrologyDCInefficient(¶meters,iomodel,solution_type,analysis_type); 230 CreateParametersHydrologyDCEfficient(¶meters,iomodel,solution_type,analysis_type); 229 231 #endif 230 232 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DistributeNumDofs.cpp
r14588 r14769 80 80 numdofs=1; 81 81 } 82 else if (analysis_type==HydrologyAnalysisEnum){ 82 else if (analysis_type==HydrologyDCInefficientAnalysisEnum){ 83 numdofs=1; 84 } 85 else if (analysis_type==HydrologyDCEfficientAnalysisEnum){ 86 numdofs=1; 87 } 88 else if (analysis_type==HydrologyShreveAnalysisEnum){ 83 89 numdofs=1; 84 90 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CMakeLists.txt
r14284 r14769 2 2 # }}} 3 3 # HYDROLOGY_SOURCES {{{ 4 set(HYDROLOGY_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology /CreateConstraintsHydrology.cpp5 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology /CreateLoadsHydrology.cpp6 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology /CreateNodesHydrology.cpp7 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/Hydrology /UpdateElementsHydrology.cpp PARENT_SCOPE)4 set(HYDROLOGY_SOURCES $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp 5 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/HydrologyShreve/CreateLoadsHydrologyShreve.cpp 6 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp 7 $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp PARENT_SCOPE) 8 8 # }}} -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp
r14767 r14769 1 1 /* 2 * CreateConstraintsHydrology .c:2 * CreateConstraintsHydrologyShreve.c: 3 3 */ 4 4 … … 12 12 #include "../ModelProcessorx.h" 13 13 14 void CreateConstraintsHydrology (Constraints** pconstraints, IoModel* iomodel){14 void CreateConstraintsHydrologyShreve(Constraints** pconstraints, IoModel* iomodel){ 15 15 16 16 /*Recover pointer: */ … … 25 25 if(!constraints) constraints = new Constraints(); 26 26 27 if(hydrology_model==HydrologyshreveEnum){ 28 IoModelToConstraintsx(constraints,iomodel,HydrologyshreveSpcwatercolumnEnum,HydrologyAnalysisEnum); 27 if(hydrology_model!=HydrologyshreveEnum){ 28 *pconstraints=constraints; 29 return; 29 30 } 30 else if(hydrology_model==HydrologydcEnum){ 31 iomodel->Constant(&isefficientlayer,HydrologydcIsefficientlayerEnum); 32 IoModelToConstraintsx(constraints,iomodel,HydrologydcSpcsedimentHeadEnum,HydrologyAnalysisEnum); 33 34 if(isefficientlayer){ 35 IoModelToConstraintsx(constraints,iomodel,HydrologydcSpceplHeadEnum,HydrologyAnalysisEnum); 36 } 37 } 38 else{ 39 _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet"); 40 } 31 32 IoModelToConstraintsx(constraints,iomodel,HydrologyshreveSpcwatercolumnEnum,HydrologyShreveAnalysisEnum); 41 33 42 34 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateLoadsHydrologyShreve.cpp
r14767 r14769 1 /*! \file CreateLoadsHydrology .c:1 /*! \file CreateLoadsHydrologyShreve.c: 2 2 */ 3 3 … … 11 11 #include "../ModelProcessorx.h" 12 12 13 void CreateLoadsHydrology(Loads** ploads, IoModel* iomodel){ 13 void CreateLoadsHydrologyShreve(Loads** ploads, IoModel* iomodel){ 14 15 /*Intermediary*/ 16 int numberofvertices; 17 Pengrid *pengrid = NULL; 14 18 15 19 /*Recover pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp
r14767 r14769 1 1 /* 2 * CreateNodesHydrology .c:2 * CreateNodesHydrologyShreve.c: 3 3 */ 4 4 … … 13 13 #include "../ModelProcessorx.h" 14 14 15 void CreateNodesHydrology (Nodes** pnodes, IoModel* iomodel){15 void CreateNodesHydrologyShreve(Nodes** pnodes, IoModel* iomodel){ 16 16 17 17 /*Intermediary*/ 18 int i; 18 int i; 19 int hydrology_model; 19 20 bool continuous_galerkin=true; 20 int 21 int numberofvertices; 21 22 22 23 /*Fetch parameters: */ 23 24 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum); 25 iomodel->Constant(&hydrology_model,HydrologyEnum); 24 26 25 27 /*Recover pointer: */ … … 28 30 /*Create nodes if they do not exist yet*/ 29 31 if(!nodes) nodes = new Nodes(); 32 33 /*Now, do we really want Shreve?*/ 34 if(hydrology_model!=HydrologyshreveEnum){ 35 *pnodes=nodes; 36 return; 37 } 30 38 31 39 /*Continuous Galerkin partition of nodes: */ … … 38 46 if(iomodel->my_vertices[i]){ 39 47 /*Add node to nodes dataset: */ 40 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i+1,i,iomodel,HydrologyAnalysisEnum)); 41 48 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i+1,i,iomodel,HydrologyShreveAnalysisEnum)); 42 49 } 43 50 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp
r14767 r14769 1 /*!\file: CreateParametersHydrology .cpp1 /*!\file: CreateParametersHydrologyShreve.cpp 2 2 * \brief driver for creating parameters dataset, for control analysis. 3 3 */ … … 12 12 #include "../ModelProcessorx.h" 13 13 14 void CreateParametersHydrology (Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type){14 void CreateParametersHydrologyShreve(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type){ 15 15 16 16 Parameters *parameters = NULL; … … 24 24 iomodel->Constant(&hydrology_model,HydrologyEnum); 25 25 26 /*Now, do we really want Shreve?*/ 27 if(hydrology_model!=HydrologyshreveEnum){ 28 *pparameters=parameters; 29 return; 30 } 31 26 32 parameters->AddObject(new IntParam(HydrologyEnum,hydrology_model)); 27 if(hydrology_model==HydrologyshreveEnum){ 28 parameters->AddObject(iomodel->CopyConstantObject(HydrologyshreveStabilizationEnum)); 29 } 30 else if(hydrology_model==HydrologydcEnum){ 31 iomodel->FetchData(&isefficientlayer,HydrologydcIsefficientlayerEnum); 32 parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer)); 33 } 34 else{ 35 _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet"); 36 } 33 parameters->AddObject(iomodel->CopyConstantObject(HydrologyshreveStabilizationEnum)); 37 34 38 35 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp
r14767 r14769 1 1 /* 2 * UpdateElementsHydrology :2 * UpdateElementsHydrologyShreve: 3 3 */ 4 4 … … 14 14 #include "../ModelProcessorx.h" 15 15 16 void UpdateElementsHydrology (Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){16 void UpdateElementsHydrologyShreve(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 17 17 18 18 int hydrology_model; … … 23 23 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 24 24 iomodel->FetchData(1,MeshElementsEnum); 25 26 /*Now, do we really want Shreve?*/ 27 if(hydrology_model!=HydrologyshreveEnum) return; 25 28 26 29 /*Update elements: */ … … 42 45 iomodel->FetchDataToInput(elements,MaskElementonwaterEnum); 43 46 iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum); 44 if(hydrology_model==HydrologyshreveEnum){ 45 iomodel->FetchDataToInput(elements,WatercolumnEnum); 46 elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum); 47 } 48 else if(hydrology_model==HydrologydcEnum){ 49 iomodel->FetchDataToInput(elements,SedimentHeadEnum); 50 } 51 else{ 52 _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet"); 53 } 47 iomodel->FetchDataToInput(elements,WatercolumnEnum); 48 49 elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum); 54 50 55 51 /*Free data: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
r14588 r14769 24 24 void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type); 25 25 void CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath,int solution_type,int analysis_type); 26 void CreateParametersHydrology(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type); 26 void CreateParametersHydrologyShreve(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type); 27 void CreateParametersHydrologyDCInefficient(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type); 28 void CreateParametersHydrologyDCEfficient(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type); 27 29 void UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel); 28 30 … … 79 81 void UpdateElementsEnthalpy(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 80 82 81 /*hydrology:*/ 82 void CreateNodesHydrology(Nodes** pnodes,IoModel* iomodel); 83 void CreateConstraintsHydrology(Constraints** pconstraints,IoModel* iomodel); 84 void CreateLoadsHydrology(Loads** ploads, IoModel* iomodel); 85 void UpdateElementsHydrology(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 83 /*hydrology Shreve:*/ 84 void CreateNodesHydrologyShreve(Nodes** pnodes,IoModel* iomodel); 85 void CreateConstraintsHydrologyShreve(Constraints** pconstraints,IoModel* iomodel); 86 void CreateLoadsHydrologyShreve(Loads** ploads, IoModel* iomodel); 87 void UpdateElementsHydrologyShreve(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 88 89 /*hydrology DC:*/ 90 void CreateNodesHydrologyDCInefficient(Nodes** pnodes,IoModel* iomodel); 91 void CreateConstraintsHydrologyDCInefficient(Constraints** pconstraints,IoModel* iomodel); 92 void CreateLoadsHydrologyDCInefficient(Loads** ploads, IoModel* iomodel); 93 void UpdateElementsHydrologyDCInefficient(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 94 void CreateNodesHydrologyDCEfficient(Nodes** pnodes,IoModel* iomodel); 95 void CreateConstraintsHydrologyDCEfficient(Constraints** pconstraints,IoModel* iomodel); 96 void CreateLoadsHydrologyDCEfficient(Loads** ploads, IoModel* iomodel); 97 void UpdateElementsHydrologyDCEfficient(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 86 98 87 99 /*melting:*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
r13762 r14769 14 14 15 15 /*Intermediary*/ 16 int i; 17 int dim; 18 int numberofvertices; 19 Pengrid* pengrid = NULL; 16 int dim; 17 int numberofvertices; 18 Pengrid *pengrid = NULL; 20 19 21 20 /*Recover pointer: */ … … 36 35 CreateSingleNodeToElementConnectivity(iomodel); 37 36 38 for (i=0;i<numberofvertices;i++){37 for(int i=0;i<numberofvertices;i++){ 39 38 40 39 /*keep only this partition's nodes:*/ -
issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
r14757 r14769 109 109 else if (strcmp(name,"HydrologydcEplTransmitivity")==0) return HydrologydcEplTransmitivityEnum; 110 110 else if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum; 111 else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum; 112 else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum; 113 else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum; 114 else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum; 111 115 else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum; 112 116 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; … … 134 138 else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum; 135 139 else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum; 136 else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum; 140 else stage=2; 141 } 142 if(stage==2){ 143 if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum; 137 144 else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum; 138 145 else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum; 139 146 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum; 140 else stage=2; 141 } 142 if(stage==2){ 143 if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; 147 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; 144 148 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; 145 149 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum; … … 257 261 else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum; 258 262 else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum; 259 else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum; 263 else stage=3; 264 } 265 if(stage==3){ 266 if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum; 260 267 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; 261 268 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 262 269 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 263 else stage=3; 264 } 265 if(stage==3){ 266 if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum; 270 else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum; 267 271 else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum; 268 272 else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum; … … 284 288 else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum; 285 289 else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum; 286 else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum; 290 else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 291 else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 292 else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum; 287 293 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; 288 294 else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum; … … 378 384 else if (strcmp(name,"Water")==0) return WaterEnum; 379 385 else if (strcmp(name,"Closed")==0) return ClosedEnum; 380 else if (strcmp(name,"Free")==0) return FreeEnum; 386 else stage=4; 387 } 388 if(stage==4){ 389 if (strcmp(name,"Free")==0) return FreeEnum; 381 390 else if (strcmp(name,"Open")==0) return OpenEnum; 382 391 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; … … 384 393 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 385 394 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 386 else stage=4; 387 } 388 if(stage==4){ 389 if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum; 395 else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum; 390 396 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 391 397 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; … … 501 507 else if (strcmp(name,"MinVz")==0) return MinVzEnum; 502 508 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum; 503 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; 509 else stage=5; 510 } 511 if(stage==5){ 512 if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; 504 513 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 505 514 else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum; … … 507 516 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum; 508 517 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 509 else stage=5; 510 } 511 if(stage==5){ 512 if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum; 518 else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum; 513 519 else if (strcmp(name,"None")==0) return NoneEnum; 514 520 else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum; -
issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp
r14549 r14769 64 64 65 65 case HydrologySolutionEnum: 66 numanalyses= 3;66 numanalyses=5; 67 67 analyses=xNew<int>(numanalyses); 68 analyses[0]=HydrologyAnalysisEnum; 69 analyses[1]=SurfaceSlopeAnalysisEnum; 70 analyses[2]=BedSlopeAnalysisEnum; 68 analyses[0]=HydrologyShreveAnalysisEnum; 69 analyses[1]=HydrologyDCInefficientAnalysisEnum; 70 analyses[2]=HydrologyDCEfficientAnalysisEnum; 71 analyses[3]=SurfaceSlopeAnalysisEnum; 72 analyses[4]=BedSlopeAnalysisEnum; 71 73 break; 72 74 -
issm/trunk-jpl/src/c/solutions/hydrology_core.cpp
r14757 r14769 61 61 if (hydrology_model==HydrologyshreveEnum){ 62 62 if(VerboseSolution()) _pprintLine_(" computing water column"); 63 femmodel->SetCurrentConfiguration(Hydrology AnalysisEnum);63 femmodel->SetCurrentConfiguration(HydrologyShreveAnalysisEnum); 64 64 solver_nonlinear(femmodel,modify_loads); 65 65 … … 81 81 else if (hydrology_model==HydrologydcEnum){ 82 82 if(VerboseSolution()) _pprintLine_(" computing water head"); 83 femmodel->SetCurrentConfiguration(HydrologyAnalysisEnum); 84 solver_linear(femmodel); 83 solver_hydro_nonlinear(femmodel); 85 84 if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){ 86 85 if(VerboseSolution()) _pprintLine_(" saving results "); -
issm/trunk-jpl/src/c/solvers/solver_thermal_nonlinear.cpp
r14412 r14769 3 3 */ 4 4 5 #include "./solvers.h" 5 6 #include "../toolkits/toolkits.h" 6 7 #include "../classes/objects/objects.h" … … 32 33 33 34 /*parameters:*/ 34 int kflag,pflag;35 35 int configuration_type; 36 36 37 37 /*Recover parameters: */ 38 kflag=1; pflag=1;39 38 femmodel->parameters->FindParam(&thermal_penalty_threshold,ThermalPenaltyThresholdEnum); 40 39 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); -
issm/trunk-jpl/src/c/solvers/solvers.h
r12832 r14769 13 13 14 14 void solver_thermal_nonlinear(FemModel* femmodel); 15 void solver_hydro_nonlinear(FemModel* femmodel); 15 16 void solver_nonlinear(FemModel* femmodel,bool conserve_loads); 16 17 void solver_newton(FemModel* femmodel);
Note:
See TracChangeset
for help on using the changeset viewer.