Changeset 14164


Ignore:
Timestamp:
12/14/12 09:04:11 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: not every field is necessary for tao

Location:
issm/trunk-jpl/src/c
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp

    r13787 r14164  
    1515
    1616        Parameters *parameters       = NULL;
    17         bool        control_analysis;
     17        bool        control_analysis,tao_analysis;
    1818        int         nsteps;
    1919        int         num_control_type;
     
    3030        /*retrieve some parameters: */
    3131        iomodel->Constant(&control_analysis,InversionIscontrolEnum);
     32        iomodel->Constant(&tao_analysis,InversionTaoEnum);
    3233
    3334        if(control_analysis){
     
    3738                parameters->AddObject(iomodel->CopyConstantObject(InversionNumCostFunctionsEnum));
    3839                parameters->AddObject(iomodel->CopyConstantObject(InversionNstepsEnum));
    39                 parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum));
    40                 parameters->AddObject(iomodel->CopyConstantObject(InversionGradientOnlyEnum));
    4140                parameters->AddObject(iomodel->CopyConstantObject(InversionIncompleteAdjointEnum));
     41                if(!tao_analysis){
     42                        parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum));
     43                        parameters->AddObject(iomodel->CopyConstantObject(InversionGradientOnlyEnum));
     44                }
    4245
    4346                /*What solution type?*/
     
    5255                iomodel->FetchData(&control_type,NULL,&num_control_type,InversionControlParametersEnum);
    5356                iomodel->FetchData(&cm_responses,&nsteps,&num_cm_responses,InversionCostFunctionsEnum);
    54                 iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum);
    55                 iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum);
    56                 iomodel->FetchData(&maxiter,NULL,NULL,InversionMaxiterPerStepEnum);
     57                if(!tao_analysis){
     58                        iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum);
     59                        iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum);
     60                        iomodel->FetchData(&maxiter,NULL,NULL,InversionMaxiterPerStepEnum);
     61                }
    5762
    58                 parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
    59                 parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_control_type));
    60                 parameters->AddObject(new DoubleMatParam(InversionCostFunctionsEnum,cm_responses,nsteps,num_cm_responses));
    61                 parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps));
    62                 parameters->AddObject(new DoubleVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps));
     63                if(tao_analysis){
     64                        parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
     65                        parameters->AddObject(new DoubleVecParam(InversionCostFunctionsEnum,cm_responses,num_cm_responses));
     66                }
     67                else{
     68                        parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
     69                        parameters->AddObject(new DoubleMatParam(InversionGradientScalingEnum,optscal,nsteps,num_control_type));
     70                        parameters->AddObject(new DoubleMatParam(InversionCostFunctionsEnum,cm_responses,nsteps,num_cm_responses));
     71                        parameters->AddObject(new DoubleVecParam(InversionStepThresholdEnum,cm_jump,nsteps));
     72                        parameters->AddObject(new DoubleVecParam(InversionMaxiterPerStepEnum,maxiter,nsteps));
     73                }
    6374
    6475                xDelete<int>(control_type);
  • issm/trunk-jpl/src/c/solutions/controltao_core.cpp

    r13855 r14164  
    4949        femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum);
    5050        femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);
    51         femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum);
    5251        femmodel->parameters->SetParam(false,SaveResultsEnum);
    53         maxiter=nsteps*(int)dummy[0]; xDelete<IssmDouble>(dummy);
     52        maxiter=nsteps*10;
    5453
    5554        /*Initialize TAO*/
Note: See TracChangeset for help on using the changeset viewer.