Changeset 17911
- Timestamp:
- 05/01/14 14:45:26 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp
r17907 r17911 30 30 /*Intermediaries*/ 31 31 long omode; 32 double f ;32 double f,dxmin,epsrel; 33 33 int nsteps,maxiter; 34 34 int intn,num_controls,solution_type; … … 40 40 femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum); 41 41 femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum); 42 femmodel->parameters->FindParam(&dxmin,InversionDxminEnum); 43 femmodel->parameters->FindParam(&epsrel,InversionEpsrelEnum); 42 44 femmodel->parameters->SetParam(false,SaveResultsEnum); 43 45 maxiter=nsteps*10; … … 58 60 59 61 /*Optimization criterions*/ 60 double dxmin = 1.e-1; /*Resolution for the solution x*/61 double epsrel = 1.e-4; /*Gradient stopping criterion in ]0 1[ -> |gk|/|g1| < epsrel*/62 62 long niter = long(nsteps); /*Maximum number of iterations*/ 63 63 long nsim = long(maxiter);/*Maximum number of function calls*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
r17895 r17911 32 32 parameters->AddObject(iomodel->CopyConstantObject(InversionNstepsEnum)); 33 33 parameters->AddObject(iomodel->CopyConstantObject(InversionIncompleteAdjointEnum)); 34 if(inversiontype==0){35 parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum));36 }37 34 38 35 /*What solution type?*/ … … 47 44 iomodel->FetchData(&control_type,NULL,&num_control_type,InversionControlParametersEnum); 48 45 iomodel->FetchData(&cm_responses,NULL,&num_cm_responses,InversionCostFunctionsEnum); 49 if(inversiontype==0){ 50 iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum); 51 iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum); 52 iomodel->FetchData(&maxiter,NULL,NULL,InversionMaxiterPerStepEnum); 53 } 46 parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type)); 47 parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,cm_responses,num_cm_responses)); 54 48 55 if(inversiontype!=0){ 56 parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type)); 57 parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,cm_responses,num_cm_responses)); 58 } 59 else{ 60 parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type)); 61 parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,cm_responses,num_cm_responses)); 62 parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_control_type)); 63 parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps)); 64 parameters->AddObject(new DoubleVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps)); 49 /*Inversion type specifics*/ 50 switch(inversiontype){ 51 case 0:/*Brent Search*/ 52 parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum)); 53 iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum); 54 iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum); 55 iomodel->FetchData(&maxiter,NULL,NULL,InversionMaxiterPerStepEnum); 56 parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_control_type)); 57 parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps)); 58 parameters->AddObject(new DoubleVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps)); 59 break; 60 case 1:/*TAO*/ 61 break; 62 case 2:/*M1QN3*/ 63 parameters->AddObject(iomodel->CopyConstantObject(InversionDxminEnum)); 64 parameters->AddObject(iomodel->CopyConstantObject(InversionEpsrelEnum)); 65 break; 66 default: 67 _error_("not supported"); 68 65 69 } 66 70
Note:
See TracChangeset
for help on using the changeset viewer.