Changeset 17933
- Timestamp:
- 05/05/14 15:27:07 (11 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 4 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r17926 r17933 421 421 ./cores/adjointstressbalance_core.cpp\ 422 422 ./cores/adjointbalancethickness_core.cpp\ 423 ./cores/adjointbalancethickness2_core.cpp\ 423 424 ./cores/AdjointCorePointerFromSolutionEnum.cpp\ 424 425 ./solutionsequences/solutionsequence_adjoint_linear.cpp\ … … 514 515 if ADJOINTBALANCETHICKNESS 515 516 issm_sources += ./analyses/AdjointBalancethicknessAnalysis.cpp 517 endif 518 if ADJOINTBALANCETHICKNESS2 519 issm_sources += ./analyses/AdjointBalancethickness2Analysis.cpp 516 520 endif 517 521 if ADJOINTHORIZ -
issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
r17831 r17933 16 16 #ifdef _HAVE_ADJOINTBALANCETHICKNESS_ 17 17 case AdjointBalancethicknessAnalysisEnum : return new AdjointBalancethicknessAnalysis(); 18 #endif 19 #ifdef _HAVE_ADJOINTBALANCETHICKNESS2_ 20 case AdjointBalancethickness2AnalysisEnum : return new AdjointBalancethickness2Analysis(); 18 21 #endif 19 22 #ifdef _HAVE_ADJOINTHORIZ_ -
issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
r17886 r17933 38 38 if(iomodel->my_elements[i]){ 39 39 Element* element=(Element*)elements->GetObjectByOffset(counter); 40 element->Update(i,iomodel,analysis_counter,analysis_type,P 1Enum);40 element->Update(i,iomodel,analysis_counter,analysis_type,P2Enum); 41 41 counter++; 42 42 } … … 60 60 } 61 61 iomodel->FetchDataToInput(elements,FlowequationElementEquationEnum); 62 iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); 63 iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum); 62 64 iomodel->FetchDataToInput(elements,MaterialsRheologyBEnum); 63 65 iomodel->FetchDataToInput(elements,MaterialsRheologyNEnum); … … 86 88 87 89 if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum); 88 ::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,P 1Enum);90 ::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,P2Enum); 89 91 iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum); 90 92 }/*}}}*/ … … 93 95 /*Only 3d mesh supported*/ 94 96 if(iomodel->domaintype==Domain3DEnum){ 95 IoModelToConstraintsx(constraints,iomodel,ThermalSpctemperatureEnum,ThermalAnalysisEnum,P 1Enum);97 IoModelToConstraintsx(constraints,iomodel,ThermalSpctemperatureEnum,ThermalAnalysisEnum,P2Enum); 96 98 } 97 99 -
issm/trunk-jpl/src/c/analyses/analyses.h
r17831 r17933 9 9 10 10 #include "./AdjointBalancethicknessAnalysis.h" 11 #include "./AdjointBalancethickness2Analysis.h" 11 12 #include "./AdjointHorizAnalysis.h" 12 13 #include "./BalancethicknessAnalysis.h" -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r17926 r17933 1019 1019 if (control_analysis && iomodel->Data(InversionControlParametersEnum)){ 1020 1020 for(i=0;i<num_control_type;i++){ 1021 switch(reCast<int>(iomodel->Data(InversionControlParametersEnum)[i])){ 1021 int control = reCast<int>(iomodel->Data(InversionControlParametersEnum)[i]); 1022 switch(control){ 1023 /*yts conversion*/ 1022 1024 case BalancethicknessThickeningRateEnum: 1023 if (iomodel->Data(BalancethicknessThickeningRateEnum)){ 1024 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(BalancethicknessThickeningRateEnum)[tria_vertex_ids[j]-1]; 1025 case VxEnum: 1026 case VyEnum: 1027 if(iomodel->Data(control)){ 1028 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(control)[tria_vertex_ids[j]-1]; 1025 1029 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1026 1030 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1027 this->inputs->AddInput(new ControlInput( BalancethicknessThickeningRateEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));1031 this->inputs->AddInput(new ControlInput(control,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1028 1032 } 1029 1033 break; 1030 case VxEnum: 1031 if (iomodel->Data(VxEnum)){ 1032 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(VxEnum)[tria_vertex_ids[j]-1]; 1033 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1034 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1035 this->inputs->AddInput(new ControlInput(VxEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1034 1035 /*No yts conversion*/ 1036 case ThicknessEnum: 1037 case FrictionCoefficientEnum: 1038 case BalancethicknessNuxEnum: 1039 case BalancethicknessNuyEnum: 1040 if(iomodel->Data(control)){ 1041 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(control)[tria_vertex_ids[j]-1]; 1042 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1043 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1044 this->inputs->AddInput(new ControlInput(control,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1036 1045 } 1037 1046 break; 1038 case VyEnum: 1039 if (iomodel->Data(VyEnum)){ 1040 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(VyEnum)[tria_vertex_ids[j]-1]; 1041 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1042 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1043 this->inputs->AddInput(new ControlInput(VyEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1044 } 1045 break; 1046 case ThicknessEnum: 1047 if (iomodel->Data(ThicknessEnum)){ 1048 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(ThicknessEnum)[tria_vertex_ids[j]-1]; 1049 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1050 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1051 this->inputs->AddInput(new ControlInput(ThicknessEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1052 } 1053 break; 1054 case FrictionCoefficientEnum: 1055 if (iomodel->Data(FrictionCoefficientEnum)){ 1056 for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(FrictionCoefficientEnum)[tria_vertex_ids[j]-1]; 1057 for(j=0;j<3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1058 for(j=0;j<3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1059 this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1060 } 1061 break; 1047 1048 /*Special cases (depth averaged quantities)*/ 1062 1049 case MaterialsRheologyBbarEnum: 1063 1050 if(iomodel->Data(MaterialsRheologyBEnum)){ … … 1077 1064 break; 1078 1065 default: 1079 _error_("Control " << EnumToStringx( reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet");1066 _error_("Control " << EnumToStringx(control) << " not implemented yet"); 1080 1067 } 1081 1068 } -
issm/trunk-jpl/src/c/cores/AdjointCorePointerFromSolutionEnum.cpp
r16518 r17933 32 32 adjointcore=&adjointbalancethickness_core; 33 33 break; 34 case Balancethickness2SolutionEnum: 35 adjointcore=&adjointbalancethickness2_core; 36 break; 34 37 case BalancethicknessSoftSolutionEnum: 35 38 adjointcore=&dummy_core; -
issm/trunk-jpl/src/c/cores/cores.h
r17907 r17933 18 18 void adjointstressbalance_core(FemModel* femmodel); 19 19 void adjointbalancethickness_core(FemModel* femmodel); 20 void adjointbalancethickness2_core(FemModel* femmodel); 20 21 void gradient_core(FemModel* femmodel,int n=0,bool orthogonalize=false); 21 22 void stressbalance_core(FemModel* femmodel); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r17275 r17933 16 16 Element *element = NULL; 17 17 Material *material = NULL; 18 int num_control_type;19 bool control_analysis;18 int num_control_type; 19 bool control_analysis; 20 20 21 21 /*Fetch parameters: */ … … 32 32 33 33 iomodel->FetchData(5,InversionControlParametersEnum,InversionCostFunctionsEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 34 34 35 for(i=0;i<num_control_type;i++){ 35 switch(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])){ 36 case BalancethicknessThickeningRateEnum: iomodel->FetchData(1,BalancethicknessThickeningRateEnum); break; 37 case VxEnum: iomodel->FetchData(1,VxEnum); break; 38 case VyEnum: iomodel->FetchData(1,VyEnum); break; 39 case ThicknessEnum: iomodel->FetchData(1,ThicknessEnum); break; 40 case FrictionCoefficientEnum: iomodel->FetchData(1,FrictionCoefficientEnum); break; 41 case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break; 42 case DamageDbarEnum: iomodel->FetchData(1,DamageDEnum); break; 43 default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet"); 36 int control = reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i]); 37 switch(control){ 38 /*List of supported controls*/ 39 case BalancethicknessThickeningRateEnum: 40 case VxEnum: 41 case VyEnum: 42 case ThicknessEnum: 43 case FrictionCoefficientEnum: 44 case MaterialsRheologyBbarEnum: 45 case DamageDbarEnum: 46 case BalancethicknessNuxEnum: 47 case BalancethicknessNuyEnum: 48 iomodel->FetchData(1,control); 49 break; 50 default: 51 _error_("Control " << EnumToStringx(control) << " not implemented yet"); 44 52 } 45 53 } -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r17918 r17933 329 329 ConfigurationTypeEnum, 330 330 AdjointBalancethicknessAnalysisEnum, 331 AdjointBalancethickness2AnalysisEnum, 331 332 AdjointHorizAnalysisEnum, 332 333 AnalysisCounterEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r17918 r17933 332 332 case ConfigurationTypeEnum : return "ConfigurationType"; 333 333 case AdjointBalancethicknessAnalysisEnum : return "AdjointBalancethicknessAnalysis"; 334 case AdjointBalancethickness2AnalysisEnum : return "AdjointBalancethickness2Analysis"; 334 335 case AdjointHorizAnalysisEnum : return "AdjointHorizAnalysis"; 335 336 case AnalysisCounterEnum : return "AnalysisCounter"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r17918 r17933 338 338 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; 339 339 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 340 else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum; 340 341 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 341 342 else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum; … … 382 383 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 383 384 else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum; 384 else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum; 388 if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum; 389 else if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum; 389 390 else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum; 390 391 else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; … … 505 506 else if (strcmp(name,"QmuVyMesh")==0) return QmuVyMeshEnum; 506 507 else if (strcmp(name,"QmuVzMesh")==0) return QmuVzMeshEnum; 507 else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 511 if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; 512 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 512 513 else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum; 513 514 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; … … 628 629 else if (strcmp(name,"MinVy")==0) return MinVyEnum; 629 630 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum; 630 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"MinVz")==0) return MinVzEnum; 634 if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum; 635 else if (strcmp(name,"MinVz")==0) return MinVzEnum; 635 636 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum; 636 637 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r17918 r17933 324 324 def ConfigurationTypeEnum(): return StringToEnum("ConfigurationType")[0] 325 325 def AdjointBalancethicknessAnalysisEnum(): return StringToEnum("AdjointBalancethicknessAnalysis")[0] 326 def AdjointBalancethickness2AnalysisEnum(): return StringToEnum("AdjointBalancethickness2Analysis")[0] 326 327 def AdjointHorizAnalysisEnum(): return StringToEnum("AdjointHorizAnalysis")[0] 327 328 def AnalysisCounterEnum(): return StringToEnum("AnalysisCounter")[0]
Note:
See TracChangeset
for help on using the changeset viewer.