Changeset 18705
- Timestamp:
- 10/29/14 17:14:07 (10 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r18689 r18705 689 689 } 690 690 } 691 691 692 } 692 693 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; … … 731 732 } 732 733 else{ 733 /*Do not do anything: at least one node is active for this element but this element is not solved for*/734 /*Do not do anything: at least one node was active for this element but this element is not solved for*/ 734 735 } 735 736 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;}; -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r18689 r18705 17 17 int penalty_lock; 18 18 int hydro_maxiter; 19 int *elementactive_counter =NULL; 19 20 bool isefficientlayer; 20 21 IssmDouble sedimentlimit; … … 56 57 parameters->AddObject(new IntParam(HydrologydcMaxIterEnum,hydro_maxiter)); 57 58 59 if(isefficientlayer==1){ 60 elementactive_counter=xNewZeroInit<int>(iomodel->numberofelements); 61 parameters->AddObject(new IntVecParam(ElementActiveCounterEnum,elementactive_counter,iomodel->numberofelements)); 62 } 63 58 64 }/*}}}*/ 59 65 void HydrologyDCInefficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ 60 66 61 67 bool isefficientlayer; 68 bool element_active; 62 69 int hydrology_model; 63 70 64 71 /*Fetch data needed: */ 65 72 iomodel->Constant(&hydrology_model,HydrologyModelEnum); … … 93 100 } 94 101 95 if(isefficientlayer)iomodel->FetchDataToInput(elements,HydrologydcMaskEplactiveNodeEnum); 102 if(isefficientlayer){ 103 iomodel->FetchDataToInput(elements,HydrologydcMaskEplactiveNodeEnum); 104 105 for(int i=0;i<iomodel->numberofelements;i++){ 106 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 107 Input* node_mask_input = element->GetInput(HydrologydcMaskEplactiveNodeEnum); _assert_(node_mask_input); 108 109 if(node_mask_input->Max()>0.) { 110 element_active = true; 111 } 112 else{ 113 element_active = false; 114 } 115 element->AddInput(new BoolInput(HydrologydcMaskEplactiveEltEnum,element_active)); 116 } 117 } 96 118 }/*}}}*/ 97 119 void HydrologyDCInefficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/ … … 661 683 662 684 bool element_active; 685 bool old_active; 686 int penalty_lock; 687 int* elementactive_counter = NULL; 663 688 Element* element=NULL; 664 689 665 690 for(int i=0;i<femmodel->elements->Size();i++){ 666 691 element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 667 668 int numvertices = element->GetNumberOfVertices(); 669 Input* node_mask_input = element->GetInput(HydrologydcMaskEplactiveNodeEnum); 692 element->parameters->FindParam(&elementactive_counter,NULL,ElementActiveCounterEnum); 693 element->parameters->FindParam(&penalty_lock,HydrologydcPenaltyLockEnum); 694 695 Input* node_mask_input = element->GetInput(HydrologydcMaskEplactiveNodeEnum); _assert_(node_mask_input); 696 Input* old_active_input = element->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(old_active_input); 697 old_active_input->GetInputValue(&old_active); 698 670 699 if(node_mask_input->Max()>0.) { 671 700 element_active = true; … … 674 703 element_active = false; 675 704 } 705 if(old_active!=element_active){ 706 elementactive_counter[i]=elementactive_counter[i]+1; 707 } 708 if(elementactive_counter[i]>penalty_lock){ 709 element_active = true; 710 } 711 // femmodel->parameters->SetParam(elementactive_counter,ElementActiveCounterEnum); 676 712 element->AddInput(new BoolInput(HydrologydcMaskEplactiveEltEnum,element_active)); 677 713 } 678 714 }/*}}}*/ 679 715 716 void HydrologyDCInefficientAnalysis::ResetCounter(FemModel* femmodel){/*{{{*/ 717 718 int* elementactive_counter = NULL; 719 Element* element=NULL; 720 721 for(int i=0;i<femmodel->elements->Size();i++){ 722 element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 723 element->parameters->FindParam(&elementactive_counter,NULL,ElementActiveCounterEnum); 724 725 elementactive_counter=0; 726 } 727 }/*}}}*/ -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h
r18641 r18705 41 41 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input); 42 42 void ElementizeEplMask(FemModel* femmodel); 43 void ResetCounter(FemModel* femmodel); 43 44 }; 44 45 #endif -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r18662 r18705 109 109 EplHeadSlopeXEnum, 110 110 EplHeadSlopeYEnum, 111 ElementActiveCounterEnum, 111 112 HydrologydcMaxIterEnum, 112 113 HydrologydcRelTolEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r18662 r18705 117 117 case EplHeadSlopeXEnum : return "EplHeadSlopeX"; 118 118 case EplHeadSlopeYEnum : return "EplHeadSlopeY"; 119 case ElementActiveCounterEnum : return "ElementActiveCounter"; 119 120 case HydrologydcMaxIterEnum : return "HydrologydcMaxIter"; 120 121 case HydrologydcRelTolEnum : return "HydrologydcRelTol"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r18662 r18705 117 117 else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum; 118 118 else if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum; 119 else if (strcmp(name,"ElementActiveCounter")==0) return ElementActiveCounterEnum; 119 120 else if (strcmp(name,"HydrologydcMaxIter")==0) return HydrologydcMaxIterEnum; 120 121 else if (strcmp(name,"HydrologydcRelTol")==0) return HydrologydcRelTolEnum; … … 136 137 else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum; 137 138 else if (strcmp(name,"HydrologydcEplConductivity")==0) return HydrologydcEplConductivityEnum; 138 else if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum; 142 if (strcmp(name,"HydrologydcIsefficientlayer")==0) return HydrologydcIsefficientlayerEnum; 143 else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum; 143 144 else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum; 144 145 else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum; … … 259 260 else if (strcmp(name,"MasstransportSpcthickness")==0) return MasstransportSpcthicknessEnum; 260 261 else if (strcmp(name,"MasstransportCalvingrate")==0) return MasstransportCalvingrateEnum; 261 else if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MasstransportVertexPairing")==0) return MasstransportVertexPairingEnum; 265 if (strcmp(name,"MasstransportStabilization")==0) return MasstransportStabilizationEnum; 266 else if (strcmp(name,"MasstransportVertexPairing")==0) return MasstransportVertexPairingEnum; 266 267 else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum; 267 268 else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum; … … 382 383 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 383 384 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 384 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 388 if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum; 389 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 389 390 else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum; 390 391 else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum; … … 505 506 else if (strcmp(name,"Free")==0) return FreeEnum; 506 507 else if (strcmp(name,"Open")==0) return OpenEnum; 507 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 511 if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 512 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 512 513 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 513 514 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; … … 628 629 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 629 630 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 630 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"J")==0) return JEnum; 634 if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 635 else if (strcmp(name,"J")==0) return JEnum; 635 636 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 636 637 else if (strcmp(name,"Step")==0) return StepEnum; … … 751 752 else if (strcmp(name,"BasalforcingsOceanCoef")==0) return BasalforcingsOceanCoefEnum; 752 753 else if (strcmp(name,"BasalforcingsOceanLinDragCoef")==0) return BasalforcingsOceanLinDragCoefEnum; 753 else if (strcmp(name,"BasalforcingsOceanQuadDragCoef")==0) return BasalforcingsOceanQuadDragCoefEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"BasalforcingsOceanTurningAngle")==0) return BasalforcingsOceanTurningAngleEnum; 757 if (strcmp(name,"BasalforcingsOceanQuadDragCoef")==0) return BasalforcingsOceanQuadDragCoefEnum; 758 else if (strcmp(name,"BasalforcingsOceanTurningAngle")==0) return BasalforcingsOceanTurningAngleEnum; 758 759 else if (strcmp(name,"BasalforcingsOceanSsh")==0) return BasalforcingsOceanSshEnum; 759 760 else if (strcmp(name,"BasalforcingsOceanVx")==0) return BasalforcingsOceanVxEnum; -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r17372 r18705 222 222 InputUpdateFromConstantx(femmodel,eplconverged,ConvergedEnum); 223 223 InputUpdateFromSolutionx(femmodel,ug_epl); 224 inefanalysis->ResetCounter(femmodel); 224 225 break; 225 226 }
Note:
See TracChangeset
for help on using the changeset viewer.