Changeset 11357
- Timestamp:
- 02/08/12 07:30:01 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/solutions/controltao_core.cpp
r11322 r11357 26 26 /*TAO*/ 27 27 int ierr; 28 int num_controls; 28 int num_controls,solution_type; 29 int nsteps,maxiter; 29 30 AppCtx user; 30 31 TaoSolver tao; 32 int *dummy = NULL; 31 33 int *control_list = NULL; 32 34 Vec X = NULL; … … 41 43 42 44 /*Recover some parameters*/ 45 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 43 46 femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum); 44 47 femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum); 48 femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum); 49 femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum); 50 maxiter=nsteps*dummy[0]; xfree((void**)&dummy); 45 51 46 52 /*Initialize TAO*/ … … 54 60 55 61 /*Prepare all TAO parameters*/ 56 TaoSetMaximumFunctionEvaluations(tao, 50);57 TaoSetMaximumIterations(tao, 10);62 TaoSetMaximumFunctionEvaluations(tao,maxiter); 63 TaoSetMaximumIterations(tao,nsteps); 58 64 TaoSetTolerances(tao,0.,0.,0.,0.,0.); 59 65 … … 78 84 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_list[i]); 79 85 } 86 87 /*Finalize*/ 88 _printf_(VerboseControl(),"%s\n"," preparing final solution"); 89 femmodel->parameters->SetParam(false,InversionIscontrolEnum); //needed to turn control result output in solutioncore 90 void (*solutioncore)(FemModel*)=NULL; 91 CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type); 92 solutioncore(femmodel); 80 93 81 94 /*Clean up and return*/ … … 119 132 /*Compute objective function*/ 120 133 CostFunctionx(fcn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 121 _printf_(true,"f(x)=%g\n",*fcn);122 134 123 135 /*Compute gradient*/ … … 125 137 VecCopy(gradient,G); VecFree(&gradient); 126 138 VecScale(G,-1.); 127 //VecView(G,PETSC_VIEWER_STDOUT_WORLD);128 139 129 140 /*Clean-up and return*/
Note:
See TracChangeset
for help on using the changeset viewer.