Changeset 11984
- Timestamp:
- 04/13/12 16:52:42 (13 years ago)
- Location:
- issm/branches/trunk-jpl-damage/src
- Files:
-
- 1 added
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h
r11708 r11984 82 82 InversionStepThresholdEnum, 83 83 InversionThicknessObsEnum, 84 InversionThreshParametersEnum, 84 85 InversionVelObsEnum, 85 86 InversionVxObsEnum, -
issm/branches/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp
r11708 r11984 86 86 case InversionStepThresholdEnum : return "InversionStepThreshold"; 87 87 case InversionThicknessObsEnum : return "InversionThicknessObs"; 88 case InversionThreshParametersEnum : return "InversionThreshParameters"; 88 89 case InversionVelObsEnum : return "InversionVelObs"; 89 90 case InversionVxObsEnum : return "InversionVxObs"; -
issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r11462 r11984 40 40 iomodel->FetchDataToInput(elements,InversionThicknessObsEnum); 41 41 42 iomodel->FetchData( 4,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum);42 iomodel->FetchData(5,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,InversionThreshParametersEnum); 43 43 for(i=0;i<num_control_type;i++){ 44 44 switch((int)iomodel->Data(InversionControlParametersEnum)[i]){ … … 67 67 68 68 /*Free data: */ 69 iomodel->DeleteData(1+ 4+6,MeshElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsRheologyZEnum);69 iomodel->DeleteData(1+5+6,MeshElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,InversionThreshParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsRheologyZEnum); 70 70 } -
issm/branches/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r11462 r11984 49 49 if(dim==3)iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum); 50 50 #endif 51 if(control_analysis)iomodel->FetchData( 3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum);51 if(control_analysis)iomodel->FetchData(4,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum,InversionThreshParametersEnum); 52 52 53 53 /*Create elements and materials: */ … … 67 67 68 68 /*Free data: */ 69 iomodel->DeleteData(1 0,MeshElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum,69 iomodel->DeleteData(11,MeshElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum, 70 70 MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsRheologyZEnum,InversionControlParametersEnum,InversionMinParametersEnum, 71 InversionMaxParametersEnum );71 InversionMaxParametersEnum,InversionThreshParametersEnum); 72 72 73 73 /*Add new constrant material property tgo materials, at the end: */ -
issm/branches/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp
r11708 r11984 87 87 else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum; 88 88 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; 89 else if (strcmp(name,"InversionThreshParameters")==0) return InversionThreshParametersEnum; 89 90 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 90 91 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; … … 136 137 else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum; 137 138 else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum; 138 else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum; 142 if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum; 143 else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum; 143 144 else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum; 144 145 else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum; … … 259 260 else if (strcmp(name,"Matpar")==0) return MatparEnum; 260 261 else if (strcmp(name,"Node")==0) return NodeEnum; 261 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"Param")==0) return ParamEnum; 265 if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 266 else if (strcmp(name,"Param")==0) return ParamEnum; 266 267 else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum; 267 268 else if (strcmp(name,"Pengrid")==0) return PengridEnum; … … 382 383 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 383 384 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum; 384 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 388 if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 389 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 389 390 else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum; 390 391 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; -
issm/branches/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp
r11708 r11984 1689 1689 double cmmininputs[6]; 1690 1690 double cmmaxinputs[6]; 1691 double cmthreshinputs[6]; 1691 1692 1692 1693 double yts; … … 1721 1722 for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1722 1723 for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1723 this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1724 for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1725 this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1724 1726 } 1725 1727 break; … … 1729 1731 for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1730 1732 for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1731 this->inputs->AddInput(new ControlInput(VxEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1733 for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1734 this->inputs->AddInput(new ControlInput(VxEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1732 1735 } 1733 1736 break; … … 1737 1740 for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1738 1741 for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1739 this->inputs->AddInput(new ControlInput(VyEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1742 for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1743 this->inputs->AddInput(new ControlInput(VyEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1740 1744 } 1741 1745 break; … … 1745 1749 for(j=0;j<6;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1746 1750 for(j=0;j<6;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1747 this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1751 for(j=0;j<6;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1752 this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1748 1753 } 1749 1754 break; -
issm/branches/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp
r11708 r11984 1528 1528 double cmmininputs[3]; 1529 1529 double cmmaxinputs[3]; 1530 double cmthreshinputs[3]; 1530 1531 bool control_analysis=false; 1531 1532 int num_control_type; … … 1554 1555 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1555 1556 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1556 this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1557 for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1558 this->inputs->AddInput(new ControlInput(BalancethicknessThickeningRateEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1557 1559 } 1558 1560 break; … … 1562 1564 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1563 1565 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1564 this->inputs->AddInput(new ControlInput(VxEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1566 for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1567 this->inputs->AddInput(new ControlInput(VxEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1565 1568 } 1566 1569 break; … … 1570 1573 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1571 1574 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1572 this->inputs->AddInput(new ControlInput(VyEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1575 for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1576 this->inputs->AddInput(new ControlInput(VyEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1573 1577 } 1574 1578 break; … … 1578 1582 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1579 1583 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1580 this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1584 for(j=0;j<3;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1585 this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 1581 1586 } 1582 1587 break; -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.cpp
r11708 r11984 218 218 /*}}}*/ 219 219 /*FUNCTION BoolInput::Constrain{{{1*/ 220 void BoolInput::Constrain(double cm_min, double cm_max ){220 void BoolInput::Constrain(double cm_min, double cm_max, double cm_thresh){ 221 221 222 222 if(!isnan(cm_min)) if (this->value<cm_min)this->value=cm_min; 223 223 if(!isnan(cm_max)) if (this->value>cm_max)this->value=cm_max; 224 if(!isnan(cm_thresh)) if (this->value<cm_thresh)this->value=cm_min; 224 225 225 226 } -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/BoolInput.h
r11708 r11984 78 78 void ArtificialNoise(double min,double max){_error_("not implemented yet");}; 79 79 void AXPY(Input* xinput,double scalar); 80 void Constrain(double cm_min, double cm_max );80 void Constrain(double cm_min, double cm_max, double cm_thresh); 81 81 void Extrude(void); 82 82 void VerticallyIntegrate(Input* thickness_input){_error_("not supported yet");}; -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.cpp
r11708 r11984 25 25 minvalues = NULL; 26 26 maxvalues = NULL; 27 threshvalues = NULL; 27 28 gradient = NULL; 28 29 } 29 30 /*}}}*/ 30 /*FUNCTION ControlInput::ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax, int id){{{1*/31 ControlInput::ControlInput(int in_enum_type,int enum_input,double* pvalues,double* pmin,double* pmax, int id){31 /*FUNCTION ControlInput::ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,double* pthresh,int id){{{1*/ 32 ControlInput::ControlInput(int in_enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,double* pthresh,int id){ 32 33 33 34 control_id=id; … … 40 41 minvalues =new TriaP1Input(enum_type,pmin); 41 42 maxvalues =new TriaP1Input(enum_type,pmax); 43 threshvalues =new TriaP1Input(enum_type,pthresh); 42 44 break; 43 45 case PentaP1InputEnum: … … 46 48 minvalues =new PentaP1Input(enum_type,pmin); 47 49 maxvalues =new PentaP1Input(enum_type,pmax); 50 threshvalues =new TriaP1Input(enum_type,pthresh); 48 51 break; 49 52 default: … … 59 62 delete minvalues; 60 63 delete maxvalues; 64 delete threshvalues; 61 65 delete gradient; 62 66 } … … 344 348 delete values; this->values=newvalues; 345 349 }/*}}}*/ 346 /*FUNCTION ControlInput::Constrain(double min, double max ){{{1*/347 void ControlInput::Constrain(double min, double max ){348 values->Constrain(min,max );350 /*FUNCTION ControlInput::Constrain(double min, double max, double thresh){{{1*/ 351 void ControlInput::Constrain(double min, double max, double thresh){ 352 values->Constrain(min,max,thresh); 349 353 }/*}}}*/ 350 354 /*FUNCTION ControlInput::Extrude{{{1*/ -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/ControlInput.h
r11708 r11984 23 23 Input* minvalues; 24 24 Input* maxvalues; 25 Input* threshvalues; 25 26 Input* gradient; 26 27 27 28 /*ControlInput constructors, destructors: {{{1*/ 28 29 ControlInput(); 29 ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax, int id);30 ControlInput(int enum_type,int enum_input,double* pvalues,double* pmin,double* pmax,double* pthresh,int id); 30 31 ~ControlInput(); 31 32 /*}}}*/ … … 79 80 void AXPY(Input* xinput,double scalar){_error_("not implemented yet");}; 80 81 void Constrain(void); 81 void Constrain(double min,double max );82 void Constrain(double min,double max, double thresh); 82 83 double InfinityNorm(void){_error_("not implemented yet");}; 83 84 double Max(void){_error_("not implemented yet");}; -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DatasetInput.h
r11708 r11984 49 49 void Configure(Parameters* parameters); 50 50 /*}}}*/ 51 /*numeri ics: {{{1*/51 /*numerics: {{{1*/ 52 52 void GetInputValue(bool* pvalue){_error_("not implemented yet");}; 53 53 void GetInputValue(int* pvalue){_error_("not implemented yet");}; … … 74 74 void AXPY(Input* xinput,double scalar){_error_("not implemented yet");}; 75 75 void Constrain(void){_error_("not implemented yet");}; 76 void Constrain(double min,double max ){_error_("not implemented yet");};76 void Constrain(double min,double max, double thresh){_error_("not implemented yet");}; 77 77 double InfinityNorm(void){_error_("not implemented yet");}; 78 78 double Max(void){_error_("not implemented yet");}; -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.cpp
r11708 r11984 282 282 /*}}}*/ 283 283 /*FUNCTION DoubleInput::Constrain{{{1*/ 284 void DoubleInput::Constrain(double cm_min, double cm_max ){284 void DoubleInput::Constrain(double cm_min, double cm_max, double cm_thresh){ 285 285 286 286 if(!isnan(cm_min)) if (this->value<cm_min)this->value=cm_min; 287 287 if(!isnan(cm_max)) if (this->value>cm_max)this->value=cm_max; 288 if(!isnan(cm_thresh)) if (this->value<cm_thresh)this->value=cm_min; 288 289 289 290 } -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/DoubleInput.h
r11708 r11984 72 72 void ArtificialNoise(double min,double max){_error_("not implemented yet");}; 73 73 void AXPY(Input* xinput,double scalar); 74 void Constrain(double cm_min, double cm_max );74 void Constrain(double cm_min, double cm_max, double cm_thresh); 75 75 double InfinityNorm(void){_error_("not implemented yet");}; 76 76 double Max(void); -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/Input.h
r11708 r11984 53 53 virtual void ArtificialNoise(double min,double max)=0; 54 54 virtual void AXPY(Input* xinput,double scalar)=0; 55 virtual void Constrain(double cm_min, double cm_max )=0;55 virtual void Constrain(double cm_min, double cm_max, double cm_thresh)=0; 56 56 virtual void VerticallyIntegrate(Input* thickness_input)=0; 57 57 virtual void Extrude()=0; -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.cpp
r11708 r11984 223 223 /*}}}*/ 224 224 /*FUNCTION IntInput::Constrain{{{1*/ 225 void IntInput::Constrain(double cm_min, double cm_max ){225 void IntInput::Constrain(double cm_min, double cm_max, double cm_thresh){ 226 226 227 227 if(!isnan(cm_min)) if (this->value<cm_min)this->value=(int)cm_min; 228 228 if(!isnan(cm_max)) if (this->value>cm_max)this->value=(int)cm_max; 229 if(!isnan(cm_thresh)) if (this->value<cm_thresh)this->value=(int)cm_min; 229 230 230 231 } -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/IntInput.h
r11708 r11984 73 73 void ArtificialNoise(double min,double max){_error_("not implemented yet");}; 74 74 void AXPY(Input* xinput,double scalar); 75 void Constrain(double cm_min, double cm_max );75 void Constrain(double cm_min, double cm_max, double cm_thresh); 76 76 double InfinityNorm(void){_error_("InfinityNorm not implemented for integers");}; 77 77 double Max(void){_error_("Max not implemented for integers");}; -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.cpp
r11708 r11984 517 517 /*}}}*/ 518 518 /*FUNCTION PentaP1Input::Constrain{{{1*/ 519 void PentaP1Input::Constrain(double cm_min, double cm_max ){519 void PentaP1Input::Constrain(double cm_min, double cm_max, double cm_thresh){ 520 520 521 521 int i; … … 524 524 if(!isnan(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min; 525 525 if(!isnan(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max; 526 if(!isnan(cm_thresh)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_thresh)this->values[i]=cm_min; 526 527 527 528 } -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/PentaP1Input.h
r11708 r11984 74 74 void ArtificialNoise(double min,double max){_error_("not implemented yet");}; 75 75 void AXPY(Input* xinput,double scalar); 76 void Constrain(double cm_min, double cm_max );76 void Constrain(double cm_min, double cm_max, double cm_thresh); 77 77 double InfinityNorm(void); 78 78 double Max(void); -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TransientInput.h
r11708 r11984 76 76 void ArtificialNoise(double min,double max){_error_("not implemented yet");}; 77 77 void AXPY(Input* xforcing,double scalar){_error_("not implemented yet");}; 78 void Constrain(double cm_min, double cm_max ){_error_("not implemented yet");};78 void Constrain(double cm_min, double cm_max, double cm_thresh){_error_("not implemented yet");}; 79 79 double InfinityNorm(void); 80 80 double Max(void); -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.cpp
r11708 r11984 380 380 /*}}}*/ 381 381 /*FUNCTION TriaP1Input::Constrain{{{1*/ 382 void TriaP1Input::Constrain(double cm_min, double cm_max ){382 void TriaP1Input::Constrain(double cm_min, double cm_max, double cm_thresh){ 383 383 384 384 int i; … … 387 387 if(!isnan(cm_min)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_min)this->values[i]=cm_min; 388 388 if(!isnan(cm_max)) for(i=0;i<numnodes;i++)if (this->values[i]>cm_max)this->values[i]=cm_max; 389 if(!isnan(cm_thresh)) for(i=0;i<numnodes;i++)if (this->values[i]<cm_thresh)this->values[i]=cm_min; 389 390 390 391 } -
issm/branches/trunk-jpl-damage/src/c/objects/Inputs/TriaP1Input.h
r11708 r11984 74 74 void ArtificialNoise(double min,double max); 75 75 void AXPY(Input* xinput,double scalar); 76 void Constrain(double cm_min, double cm_max );76 void Constrain(double cm_min, double cm_max, double cm_thresh); 77 77 double InfinityNorm(void); 78 78 double Max(void); -
issm/branches/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp
r11708 r11984 828 828 double cmmininputs[num_vertices]; 829 829 double cmmaxinputs[num_vertices]; 830 double cmthreshinputs[num_vertices]; 830 831 831 832 /*Get B*/ … … 858 859 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 859 860 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 860 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 861 for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 862 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 861 863 } 862 864 break; … … 867 869 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 868 870 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 869 this->inputs->AddInput(new ControlInput(MaterialsRheologyZbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 871 for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 872 this->inputs->AddInput(new ControlInput(MaterialsRheologyZbarEnum,TriaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 870 873 } 871 874 break; … … 885 888 double cmmininputs[num_vertices]; 886 889 double cmmaxinputs[num_vertices]; 890 double cmthreshinputs[num_vertices]; 887 891 888 892 /*Get B*/ … … 915 919 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 916 920 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 917 this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 921 for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 922 this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 918 923 } 919 924 break; … … 924 929 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 925 930 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 926 this->inputs->AddInput(new ControlInput(MaterialsRheologyZEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 931 for(j=0;j<num_vertices;j++)cmthreshinputs[j]=iomodel->Data(InversionThreshParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 932 this->inputs->AddInput(new ControlInput(MaterialsRheologyZEnum,PentaP1InputEnum,nodeinputs,cmmininputs,cmmaxinputs,cmthreshinputs,i+1)); 927 933 } 928 934 break; -
issm/branches/trunk-jpl-damage/src/m/classes/inversion.m
r11708 r11984 18 18 min_parameters = NaN 19 19 max_parameters = NaN 20 thresh_parameters = NaN 20 21 step_threshold = NaN 21 22 gradient_only = 0 … … 103 104 checkfield(md,'inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]); 104 105 checkfield(md,'inversion.max_parameters','size',[md.mesh.numberofvertices num_controls]); 106 checkfield(md,'inversion.thresh_parameters','size',[md.mesh.numberofvertices num_controls]); 105 107 106 108 if solution==BalancethicknessSolutionEnum … … 124 126 fielddisplay(obj,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'); 125 127 fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'); 128 fielddisplay(obj,'thresh_parameters','threshold value of the inversed parameter above which value jumps to max_parameters'); 126 129 fielddisplay(obj,'gradient_only','stop control method solution at gradient'); 127 130 fielddisplay(obj,'vx_obs','observed velocity x component [m/a]'); … … 153 156 WriteData(fid,'object',obj,'fieldname','min_parameters','format','DoubleMat','mattype',3); 154 157 WriteData(fid,'object',obj,'fieldname','max_parameters','format','DoubleMat','mattype',3); 158 WriteData(fid,'object',obj,'fieldname','thresh_parameters','format','DoubleMat','mattype',3); 155 159 WriteData(fid,'object',obj,'fieldname','step_threshold','format','DoubleMat','mattype',3); 156 160 WriteData(fid,'object',obj,'fieldname','gradient_only','format','Boolean'); -
issm/branches/trunk-jpl-damage/src/m/classes/model/model.m
r11684 r11984 222 222 if isfield(structmd,'cm_min'), md.inversion.min_parameters=structmd.cm_min; end 223 223 if isfield(structmd,'cm_max'), md.inversion.max_parameters=structmd.cm_max; end 224 if isfield(structmd,'cm_thresh'), md.inversion.thresh_parameters=structmd.cm_thresh; end 224 225 if isfield(structmd,'vx_obs'), md.inversion.vx_obs=structmd.vx_obs; end 225 226 if isfield(structmd,'vy_obs'), md.inversion.vy_obs=structmd.vy_obs; end -
issm/branches/trunk-jpl-damage/src/m/model/parameterization/parametercontrolZ.m
r11462 r11984 57 57 else 58 58 md.inversion.max_parameters=cm_max; 59 end 60 61 %cm_thresh 62 cm_thresh=getfieldvalue(options,'cm_thresh',ones(md.mesh.numberofvertices,1)); 63 if (length(cm_thresh)==1) 64 md.inversion.thresh_parameters=cm_thresh*ones(md.mesh.numberofvertices,1); 65 elseif (length(cm_thresh)==md.mesh.numberofvertices) 66 md.inversion.thresh_parameters=cm_thresh; 67 else 68 md.inversion.thresh_parameters=cm_thresh; 59 69 end 60 70
Note:
See TracChangeset
for help on using the changeset viewer.