Changeset 17936
- Timestamp:
- 05/05/14 16:39:04 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r17926 r17936 1337 1337 if (control_analysis && iomodel->Data(InversionControlParametersEnum)){ 1338 1338 for(i=0;i<num_control_type;i++){ 1339 switch(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])){ 1339 int control = reCast<int>(iomodel->Data(InversionControlParametersEnum)[i]); 1340 switch(control){ 1341 /*yts conversion*/ 1340 1342 case BalancethicknessThickeningRateEnum: 1341 if (iomodel->Data(BalancethicknessThickeningRateEnum)){ 1342 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(BalancethicknessThickeningRateEnum)[penta_vertex_ids[j]-1]/yts; 1343 case VxEnum: 1344 case VyEnum: 1345 if(iomodel->Data(control)){ 1346 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(control)[penta_vertex_ids[j]-1]; 1343 1347 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1344 1348 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1345 this->inputs->AddInput(new ControlInput( BalancethicknessThickeningRateEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));1349 this->inputs->AddInput(new ControlInput(control,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1346 1350 } 1347 1351 break; 1348 case VxEnum: 1349 if (iomodel->Data(VxEnum)){ 1350 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(VxEnum)[penta_vertex_ids[j]-1]/yts; 1351 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1352 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1353 this->inputs->AddInput(new ControlInput(VxEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1352 1353 /*No yts conversion*/ 1354 case ThicknessEnum: 1355 case FrictionCoefficientEnum: 1356 if(iomodel->Data(control)){ 1357 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(control)[penta_vertex_ids[j]-1]; 1358 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1359 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1360 this->inputs->AddInput(new ControlInput(control,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1354 1361 } 1355 1362 break; 1356 case VyEnum: 1357 if (iomodel->Data(VyEnum)){ 1358 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(VyEnum)[penta_vertex_ids[j]-1]/yts; 1359 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1360 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; 1361 this->inputs->AddInput(new ControlInput(VyEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1362 } 1363 break; 1364 case FrictionCoefficientEnum: 1365 if (iomodel->Data(FrictionCoefficientEnum)){ 1366 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(FrictionCoefficientEnum)[penta_vertex_ids[j]-1]; 1367 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1368 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1369 this->inputs->AddInput(new ControlInput(FrictionCoefficientEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1370 } 1371 break; 1363 1364 /*Special cases (depth averaged quantities)*/ 1372 1365 case MaterialsRheologyBbarEnum: 1373 1366 if(iomodel->Data(MaterialsRheologyBEnum)){ … … 1375 1368 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1376 1369 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1377 this->inputs->AddInput(new ControlInput(MaterialsRheologyB Enum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));1370 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1378 1371 } 1379 1372 break; … … 1383 1376 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1384 1377 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; 1385 this->inputs->AddInput(new ControlInput(DamageD Enum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));1378 this->inputs->AddInput(new ControlInput(DamageDbarEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1386 1379 } 1387 1380 break; 1388 1381 default: 1389 _error_("Control " << EnumToStringx( reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet");1382 _error_("Control " << EnumToStringx(control) << " not implemented yet"); 1390 1383 } 1391 1384 } -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r17933 r17936 1026 1026 case VyEnum: 1027 1027 if(iomodel->Data(control)){ 1028 for(j=0;j< 3;j++)nodeinputs[j]=iomodel->Data(control)[tria_vertex_ids[j]-1];1029 for(j=0;j< 3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;1030 for(j=0;j< 3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts;1028 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(control)[tria_vertex_ids[j]-1]; 1029 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1030 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; 1031 1031 this->inputs->AddInput(new ControlInput(control,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1032 1032 } … … 1039 1039 case BalancethicknessNuyEnum: 1040 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];1041 for(j=0;j<NUMVERTICES;j++)nodeinputs[j]=iomodel->Data(control)[tria_vertex_ids[j]-1]; 1042 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1043 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1044 1044 this->inputs->AddInput(new ControlInput(control,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1045 1045 } … … 1049 1049 case MaterialsRheologyBbarEnum: 1050 1050 if(iomodel->Data(MaterialsRheologyBEnum)){ 1051 for(j=0;j< 3;j++) nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[tria_vertex_ids[j]-1];1052 for(j=0;j< 3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];1053 for(j=0;j< 3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];1051 for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[tria_vertex_ids[j]-1]; 1052 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1053 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1054 1054 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1055 1055 } … … 1057 1057 case DamageDbarEnum: 1058 1058 if(iomodel->Data(DamageDEnum)){ 1059 for(j=0;j< 3;j++) nodeinputs[j]=iomodel->Data(DamageDEnum)[tria_vertex_ids[j]-1];1060 for(j=0;j< 3;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];1061 for(j=0;j< 3;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i];1059 for(j=0;j<NUMVERTICES;j++) nodeinputs[j]=iomodel->Data(DamageDEnum)[tria_vertex_ids[j]-1]; 1060 for(j=0;j<NUMVERTICES;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1061 for(j=0;j<NUMVERTICES;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; 1062 1062 this->inputs->AddInput(new ControlInput(DamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 1063 1063 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r17933 r17936 42 42 case ThicknessEnum: 43 43 case FrictionCoefficientEnum: 44 case MaterialsRheologyBbarEnum:45 case DamageDbarEnum:46 44 case BalancethicknessNuxEnum: 47 45 case BalancethicknessNuyEnum: 48 46 iomodel->FetchData(1,control); 49 47 break; 48 49 /*Special cases*/ 50 case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break; 51 case DamageDbarEnum: iomodel->FetchData(1,DamageDEnum); break; 50 52 default: 51 53 _error_("Control " << EnumToStringx(control) << " not implemented yet");
Note:
See TracChangeset
for help on using the changeset viewer.