Changeset 11313 for issm/trunk-jpl/src/c/modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp
- Timestamp:
- 02/03/12 07:55:52 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp
r7177 r11313 9 9 #include "../../EnumDefinitions/EnumDefinitions.h" 10 10 11 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, int name,double scale){11 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* norm_list,int step){ 12 12 13 for(int i=0;i<elements->Size();i++){ 14 Element* element=(Element*)elements->GetObjectByOffset(i); 15 element->ControlInputScaleGradient(name,scale); 13 /*Intermediaries*/ 14 int i,j,num_controls; 15 int *control_type = NULL; 16 double *scalar_list = NULL; 17 double scalar; 18 19 20 /*Retrieve some parameters*/ 21 parameters->FindParam(&num_controls,InversionNumControlParametersEnum); 22 parameters->FindParam(&control_type,NULL,InversionControlParametersEnum); 23 parameters->FindParam(&scalar_list,NULL,NULL,InversionGradientScalingEnum); 24 25 /*Compute scaling factor*/ 26 scalar=scalar_list[0]/norm_list[0]; 27 for(i=0;i<num_controls;i++){ 28 scalar=min(scalar,scalar_list[num_controls*step+i]/norm_list[i]); 16 29 } 17 30 31 for(i=0;i<num_controls;i++){ 32 for(j=0;j<elements->Size();j++){ 33 Element* element=(Element*)elements->GetObjectByOffset(j); 34 element->ControlInputScaleGradient(control_type[i],scalar); 35 } 36 } 37 38 /*Clean up and return*/ 39 xfree((void**)&control_type); 40 xfree((void**)&scalar_list); 18 41 }
Note:
See TracChangeset
for help on using the changeset viewer.