Changeset 6213 for issm/trunk/src/c/solutions/gradient_core.cpp
- Timestamp:
- 10/08/10 16:49:12 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/solutions/gradient_core.cpp
r6200 r6213 17 17 /*parameters: */ 18 18 bool control_steady; 19 int control_type; 19 int num_controls; 20 int* control_type=NULL; 20 21 int verbose; 21 22 … … 27 28 /*retrieve parameters:*/ 28 29 femmodel->parameters->FindParam(&control_steady,ControlSteadyEnum); 29 femmodel->parameters->FindParam(&control_type,ControlTypeEnum); 30 femmodel->parameters->FindParam(&num_controls,NumControlsEnum); 31 femmodel->parameters->FindParam(&control_type,NULL,ControlTypeEnum); 30 32 femmodel->parameters->FindParam(&verbose,VerboseEnum); 31 33 32 if(verbose)_printf_("%s\n"," compute gradient:"); 33 Gradjx(&gradient, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters, control_type); 34 for (int i=0;i<num_controls;i++){ 34 35 35 if(control_steady)diagnostic_core(femmodel); 36 37 if (step>0 && search_scalar==0){ 38 _printf_("%s"," orthogonalization...\n"); 39 if(verbose)_printf_("%s\n"," retrieve old gradient:"); 40 ControlInputGetGradientx(&old_gradient,femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,control_type); 41 Orthx(&new_gradient,gradient,old_gradient); 42 VecFree(&old_gradient); 36 if(verbose)_printf_(" compute gradient of J with respect to %s\n",EnumToString(control_type[i])); 37 Gradjx(&gradient, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters, control_type[i]); 38 39 if(control_steady)diagnostic_core(femmodel); 40 41 if (step>0 && search_scalar==0){ 42 _printf_("%s"," orthogonalization...\n"); 43 ControlInputGetGradientx(&old_gradient,femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,control_type[i]); 44 Orthx(&new_gradient,gradient,old_gradient); 45 VecFree(&old_gradient); 46 } 47 else{ 48 _printf_("%s"," normalizing directions...\n"); 49 Orthx(&new_gradient,gradient,NULL); 50 } 51 VecFree(&gradient); 52 53 /*plug back into inputs: */ 54 ControlInputSetGradientx(femmodel-> elements,femmodel-> nodes, femmodel-> vertices,femmodel-> loads, femmodel-> materials, femmodel->parameters,control_type[i],new_gradient); 55 56 /*Free ressources and return:*/ 57 VecFree(&new_gradient); 43 58 } 44 else{45 _printf_("%s"," normalizing directions...\n");46 Orthx(&new_gradient,gradient,NULL);47 }48 VecFree(&gradient);49 59 50 /*plug back into inputs: */ 51 ControlInputSetGradientx(femmodel-> elements,femmodel-> nodes, femmodel-> vertices,femmodel-> loads, femmodel-> materials, femmodel->parameters,control_type,new_gradient); 52 53 /*Free ressources and return:*/ 54 VecFree(&new_gradient); 60 /*Clean up and return*/ 61 xfree((void**)&control_type); 55 62 }
Note:
See TracChangeset
for help on using the changeset viewer.