Changeset 15015
- Timestamp:
- 05/13/13 14:24:49 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/hydrology_core.cpp
r15006 r15015 79 79 80 80 else if (hydrology_model==HydrologydcEnum){ 81 81 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentHeadEnum,SedimentHeadOldEnum); 82 82 femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 83 84 if(VerboseSolution()) _pprintLine_(" computing water transfer"); 83 85 86 84 87 if(VerboseSolution()) _pprintLine_(" computing water head"); 85 88 solutionsequence_hydro_nonlinear(femmodel); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r15012 r15015 136 136 virtual void GetHydrologyDCInefficientHmax(IssmDouble* ph_max, Node* innode)=0; 137 137 virtual void BasisIntegral(Vector<IssmDouble>* basisg)=0; 138 virtual void GetHydrologyTransfer(Vector<IssmDouble>* transfer)=0; 138 139 #endif 139 140 }; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r15012 r15015 9344 9344 } 9345 9345 /*}}}*/ 9346 /*FUNCTION Tria::BasisIntegral {{{*/9346 /*FUNCTION Penta::BasisIntegral {{{*/ 9347 9347 void Penta::BasisIntegral(Vector<IssmDouble>* basisg){ 9348 9348 _error_("Hydrological stuff not suported in Penta"); … … 9350 9350 /*}}}*/ 9351 9351 9352 /*}}}*/ 9353 /*FUNCTION Penta::GetHydrologyTransfer{{{*/ 9354 void Penta::GetHydrologyTransfer(Vector<IssmDouble>* transfer){ 9355 _error_("Hydrological stuff not suported in Penta"); 9356 } 9357 /*}}}*/ 9358 9359 9352 9360 #endif -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r15012 r15015 307 307 void GetHydrologyDCInefficientHmax(IssmDouble* ph_max, Node* innode); 308 308 void BasisIntegral(Vector<IssmDouble>* gbasis); 309 void GetHydrologyTransfer(Vector<IssmDouble>* transfer); 309 310 #endif 310 311 #ifdef _HAVE_THERMAL_ -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15012 r15015 6466 6466 } 6467 6467 /*}}}*/ 6468 /*FUNCTION Tria::GetHydrologyTransfer{{{*/ 6469 void Tria::GetHydrologyTransfer(Vector<IssmDouble>* transfer){ 6470 6471 const int numdof = NDOF1 *NUMVERTICES; 6472 int *doflist = NULL; 6473 bool isefficientlayer; 6474 int transfermethod; 6475 IssmDouble sed_trans,sed_thick; 6476 IssmDouble leakage; 6477 IssmDouble wh_trans[numdof]={0.0}; 6478 IssmDouble storing[numdof]; 6479 IssmDouble epl_head[numdof],sed_head[numdof]; 6480 6481 6482 GetDofList(&doflist,NoneApproximationEnum,GsetEnum); 6483 6484 /*Get the flag to know if the efficient layer is present*/ 6485 this->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 6486 6487 if(!isefficientlayer){ 6488 transfer->SetValues(numdof,doflist,&wh_trans[0],ADD_VAL); 6489 return; 6490 } 6491 /*Also get the flag to the transfer method (TO DO)*/ 6492 this->parameters->FindParam(&transfermethod,HydrologydcTransferFlagEnum); 6493 6494 /*Switch between the different transfer methods cases(TO DO)*/ 6495 switch(transfermethod){ 6496 case 0: 6497 /*Just kipping the transfer to zero*/ 6498 break; 6499 case 1: 6500 this->parameters->FindParam(&leakage,HydrologydcLeakageFactorEnum); 6501 6502 sed_trans = matpar->GetSedimentTransmitivity(); 6503 sed_thick = matpar->GetSedimentThickness(); 6504 6505 GetInputListOnVertices(&sed_head[0],SedimentHeadEnum); 6506 GetInputListOnVertices(&epl_head[0],EplHeadEnum); 6507 6508 for(int i=0;i<numdof;i++){ 6509 if(sed_head[i]>epl_head[i]){ 6510 storing[i]=matpar->GetSedimentStoring(); 6511 wh_trans[i]=sed_trans*storing[i]*(sed_head[i]-epl_head[i])/(leakage*sed_thick); 6512 } 6513 else{ 6514 storing[i]=matpar->GetEplStoring(); 6515 wh_trans[i]=sed_trans*storing[i]*(sed_head[i]-epl_head[i])/(leakage*sed_thick); 6516 } 6517 } 6518 default: 6519 _error_("no case higher than 1 for the Transfer method"); 6520 } 6521 6522 /*Assign output pointer*/ 6523 transfer->SetValues(numdof,doflist,&wh_trans[0],ADD_VAL); 6524 } 6525 6526 /*}}}*/ 6468 6527 6469 6528 #endif -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r15012 r15015 254 254 void GetHydrologyDCInefficientHmax(IssmDouble* ph_max, Node* innode); 255 255 void BasisIntegral(Vector<IssmDouble>* gbasis); 256 void GetHydrologyTransfer(Vector<IssmDouble>* transfer); 256 257 #endif 257 258 #ifdef _HAVE_BALANCED_ -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r14996 r15015 1594 1594 } 1595 1595 /*}}}*/ 1596 1597 void FemModel::HydrologyTransferx(void){ /*{{{*/ 1598 1599 Vector<IssmDouble>* transferg=NULL; 1600 1601 /*Vector allocation*/ 1602 transferg=new Vector<IssmDouble>(nodes->NumberOfNodes()); 1603 1604 for (int i=0;i<elements->Size();i++){ 1605 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 1606 element->GetHydrologyTransfer(transferg); 1607 } 1608 /*Assemble*/ 1609 transferg->Assemble(); 1610 1611 /*Update Inputs*/ 1612 InputUpdateFromVectorx(elements,nodes,vertices,loads,materials,parameters,transferg,WaterTransferEnum,NodesEnum); 1613 1614 } 1615 /*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.h
r15012 r15015 100 100 void UpdateConstraintsx(void); 101 101 int UpdateVertexPositionsx(void); 102 void BasisIntegralsx(void); 102 void BasisIntegralsx(void); 103 void HydrologyTransferx(void); 103 104 }; 104 105 -
issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
r15012 r15015 370 370 } 371 371 /*}}}*/ 372 /*FUNCTION Matpar::GetSedimentThickness {{{*/ 373 IssmDouble Matpar::GetSedimentThickness(){ 374 return sediment_thickness; 375 } 376 /*}}}*/ 372 377 /*FUNCTION Matpar::GetEplTransitivity {{{*/ 373 378 IssmDouble Matpar::GetEplTransmitivity(){ -
issm/trunk-jpl/src/c/classes/Materials/Matpar.h
r14900 r15015 123 123 IssmDouble GetEplStoring(); 124 124 IssmDouble GetSedimentTransmitivity(); 125 IssmDouble GetSedimentThickness(); 125 126 IssmDouble GetEplTransmitivity(); 126 127 IssmDouble TMeltingPoint(IssmDouble pressure); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r14990 r15015 104 104 HydrologydcSedimentlimitFlagEnum, 105 105 HydrologydcSedimentlimitEnum, 106 HydrologydcTransferFlagEnum, 107 HydrologydcLeakageFactorEnum, 106 108 HydrologydcPenaltyFactorEnum, 107 109 HydrologyLayerEnum, … … 110 112 HydrologySedimentKmaxEnum, 111 113 BasisIntegralEnum, 114 WaterTransferEnum, 112 115 IndependentObjectEnum, 113 116 InversionControlParametersEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r14990 r15015 112 112 case HydrologydcSedimentlimitFlagEnum : return "HydrologydcSedimentlimitFlag"; 113 113 case HydrologydcSedimentlimitEnum : return "HydrologydcSedimentlimit"; 114 case HydrologydcTransferFlagEnum : return "HydrologydcTransferFlag"; 115 case HydrologydcLeakageFactorEnum : return "HydrologydcLeakageFactor"; 114 116 case HydrologydcPenaltyFactorEnum : return "HydrologydcPenaltyFactor"; 115 117 case HydrologyLayerEnum : return "HydrologyLayer"; … … 118 120 case HydrologySedimentKmaxEnum : return "HydrologySedimentKmax"; 119 121 case BasisIntegralEnum : return "BasisIntegral"; 122 case WaterTransferEnum : return "WaterTransfer"; 120 123 case IndependentObjectEnum : return "IndependentObject"; 121 124 case InversionControlParametersEnum : return "InversionControlParameters"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r14990 r15015 112 112 else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum; 113 113 else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum; 114 else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum; 115 else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum; 114 116 else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum; 115 117 else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum; … … 118 120 else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum; 119 121 else if (strcmp(name,"BasisIntegral")==0) return BasisIntegralEnum; 122 else if (strcmp(name,"WaterTransfer")==0) return WaterTransferEnum; 120 123 else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum; 121 124 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; … … 134 137 else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum; 135 138 else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum; 136 else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;137 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;138 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 142 if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum; 143 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; 144 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 145 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 143 146 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 144 147 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; … … 257 260 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum; 258 261 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 259 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;260 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;261 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum; 265 if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum; 266 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum; 267 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum; 268 else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum; 266 269 else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum; 267 270 else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum; … … 380 383 else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum; 381 384 else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum; 382 else if (strcmp(name,"StringParam")==0) return StringParamEnum;383 else if (strcmp(name,"Tria")==0) return TriaEnum;384 else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"Vertex")==0) return VertexEnum; 388 if (strcmp(name,"StringParam")==0) return StringParamEnum; 389 else if (strcmp(name,"Tria")==0) return TriaEnum; 390 else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum; 391 else if (strcmp(name,"Vertex")==0) return VertexEnum; 389 392 else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 390 393 else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum; … … 503 506 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum; 504 507 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 505 else if (strcmp(name,"Step")==0) return StepEnum;506 else if (strcmp(name,"Time")==0) return TimeEnum;507 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 511 if (strcmp(name,"Step")==0) return StepEnum; 512 else if (strcmp(name,"Time")==0) return TimeEnum; 513 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum; 514 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 512 515 else if (strcmp(name,"MinVel")==0) return MinVelEnum; 513 516 else if (strcmp(name,"MaxVel")==0) return MaxVelEnum; -
issm/trunk-jpl/src/m/classes/hydrologydc.m
r14838 r15015 16 16 sedimentlimit_flag = 0; 17 17 sedimentlimit = 0; 18 transfer_flag = 0; 19 leakage_factor = 0; 18 20 19 21 spcepl_head = NaN; … … 45 47 obj.sedimentlimit_flag = 0; 46 48 obj.sedimentlimit = 0; 49 obj.transfer_flag = 0; 50 obj.leakage_factor = 10.0; 47 51 48 52 obj.epl_compressibility = 1.0e-08; … … 68 72 md = checkfield(md,'hydrology.penalty_factor','>',0,'numel',1); 69 73 md = checkfield(md,'hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]); 70 74 md = checkfield(md,'hydrology.transfer_flag','numel',[1],'values',[0 1]); 75 71 76 if obj.sedimentlimit_flag==1, 72 77 md = checkfield(md,'hydrology.sedimentlimit','>',0,'numel',1); 73 78 end 74 79 80 if obj.transfer_flag==1, 81 md = checkfield(md,'hydrology.leakage_factor','>',0,'numel',1); 82 end 83 75 84 if obj.isefficientlayer==1, 76 85 … … 102 111 fielddisplay(obj,'sedimentlimit','user defined upper limit for the inefficient layer [m]'); 103 112 end 113 fielddisplay(obj,'transfer_flag',['what kind of transfer method is applied between the layers']); 114 disp(sprintf('%55s 0: no transfer',' ')); 115 disp(sprintf('%55s 1: constant leakage factor: %s',' ','leakage_factor')); 116 if obj.transfer_flag==1, 117 fielddisplay(obj,'leakage_factor','user defined leakage factor [m]'); 118 end 104 119 105 120 if obj.isefficientlayer==1, … … 125 140 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 126 141 WriteData(fid,'object',obj,'fieldname','sedimentlimit_flag','format','Integer'); 142 WriteData(fid,'object',obj,'fieldname','transfer_flag','format','Integer'); 127 143 128 144 if obj.sedimentlimit_flag==1, 129 145 WriteData(fid,'object',obj,'fieldname','sedimentlimit','format','Double'); 146 end 147 148 if obj.transfer_flag==1, 149 WriteData(fid,'object',obj,'fieldname','leakage_factor','format','Double'); 130 150 end 131 151 -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r14991 r15015 1339 1339 return StringToEnum('HydrologydcSedimentlimit')[0] 1340 1340 1341 def HydrologydcTransferFlagEnum(): 1342 """ 1343 HYDROLOGYDCTRANSFERFLAGENUM - Enum of HydrologydcTransferFlag 1344 1345 WARNING: DO NOT MODIFY THIS FILE 1346 this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 1347 Please read src/c/shared/Enum/README for more information 1348 1349 Usage: 1350 macro=HydrologydcTransferFlagEnum() 1351 """ 1352 1353 return StringToEnum('HydrologydcTransferFlag')[0] 1354 1355 def HydrologydcLeakageFactorEnum(): 1356 """ 1357 HYDROLOGYDCLEAKAGEFACTORENUM - Enum of HydrologydcLeakageFactor 1358 1359 WARNING: DO NOT MODIFY THIS FILE 1360 this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 1361 Please read src/c/shared/Enum/README for more information 1362 1363 Usage: 1364 macro=HydrologydcLeakageFactorEnum() 1365 """ 1366 1367 return StringToEnum('HydrologydcLeakageFactor')[0] 1368 1341 1369 def HydrologydcPenaltyFactorEnum(): 1342 1370 """ … … 1423 1451 return StringToEnum('BasisIntegral')[0] 1424 1452 1453 def WaterTransferEnum(): 1454 """ 1455 WATERTRANSFERENUM - Enum of WaterTransfer 1456 1457 WARNING: DO NOT MODIFY THIS FILE 1458 this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 1459 Please read src/c/shared/Enum/README for more information 1460 1461 Usage: 1462 macro=WaterTransferEnum() 1463 """ 1464 1465 return StringToEnum('WaterTransfer')[0] 1466 1425 1467 def IndependentObjectEnum(): 1426 1468 """ … … 7721 7763 """ 7722 7764 7723 return 55 07724 7765 return 553 7766 -
issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
r14991 r15015 9 9 % macro=MaximumNumberOfEnums() 10 10 11 macro=55 0;11 macro=553;
Note:
See TracChangeset
for help on using the changeset viewer.