Changeset 27665


Ignore:
Timestamp:
03/29/23 11:42:57 (2 years ago)
Author:
Mathieu Morlighem
Message:

CHG: minor cleanup

File:
1 edited

Legend:

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

    r23066 r27665  
    2929
    3030                switch(inversiontype){
    31                           {
    3231                        case 0:/*Brent Search*/
    3332                        case 1:/*TAO*/
    3433                        case 2:/*M1QN3*/
    3534                        case 3:/*Validation*/
     35                                  {
    3636                                /*How many controls and how many responses?*/
    3737                                parameters->AddObject(iomodel->CopyConstantObject("md.inversion.num_control_parameters",InversionNumControlParametersEnum));
     
    6363
    6464                                break;
    65                 }
     65                                  }
    6666                        case 4:/*AD M1QN3*/
    67                         {
    68                         /*Intermediaries*/
    69                         int            num_independent_objects,M;
    70                         char**         names                  = NULL;
     67                                  {
     68                         /*Intermediaries*/
     69                        int     num_independent_objects,M;
     70                        char**  names = NULL;
    7171
    72                                 /*this is done somewhere else*/
    73                                 parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.num_independent_objects",InversionNumControlParametersEnum));
    74                            parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.num_dependent_objects",InversionNumCostFunctionsEnum));
     72                        /*this is done somewhere else*/
     73                        parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.num_independent_objects",InversionNumControlParametersEnum));
     74                        parameters->AddObject(iomodel->CopyConstantObject("md.autodiff.num_dependent_objects",InversionNumCostFunctionsEnum));
    7575
    76                                 /*Step1: create controls (independents)*/
    77                                 iomodel->FetchData(&num_independent_objects,"md.autodiff.num_independent_objects");
    78                                 _assert_(num_independent_objects>0);
    79                                 iomodel->FetchData(&names,&M,"md.autodiff.independent_object_names");
    80                                 _assert_(M==num_independent_objects);
    81                                 int* ind_enums=xNew<int>(num_independent_objects);
    82                                 for(int i=0;i<num_independent_objects;i++){
    83                                         ind_enums[i]=StringToEnumx(names[i]);
    84                                         xDelete<char>(names[i]);
    85                                 }
     76                        /*Step 1: create controls (independents)*/
     77                        iomodel->FetchData(&num_independent_objects,"md.autodiff.num_independent_objects"); _assert_(num_independent_objects>0);
     78                        iomodel->FetchData(&names,&M,"md.autodiff.independent_object_names");               _assert_(M==num_independent_objects);
     79                        int* ind_enums=xNew<int>(num_independent_objects);
     80                        for(int i=0;i<num_independent_objects;i++){
     81                                ind_enums[i]=StringToEnumx(names[i]);
     82                                xDelete<char>(names[i]);
     83                        }
     84                        xDelete<char*>(names);
     85                        parameters->AddObject(new IntVecParam(InversionControlParametersEnum,ind_enums,num_independent_objects));
     86                        xDelete<int>(ind_enums);       
    8687
    87                                 parameters->AddObject(new IntVecParam(InversionControlParametersEnum,ind_enums,num_independent_objects));
    88                                 iomodel->FindConstant(&cm_responses,&num_costfunc,"md.autodiff.dependent_object_names");
    89                                       _assert_(num_costfunc>0);
    90                                 if(num_costfunc<1) _error_ ("no cost functions found");
    91                                 int* costfunc_enums=xNew<int>(num_costfunc);
    92                                 for(int i=0;i<num_costfunc;i++){
    93                                         costfunc_enums[i]=StringToEnumx(cm_responses[i]);
    94                                         xDelete<char>(cm_responses[i]);
    95                                 }
    96                                 xDelete<char*>(cm_responses);
    97                                 parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,costfunc_enums,num_costfunc));
     88                        iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.autodiff.independent_scaling_factors");
     89                        parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_independent_objects));
    9890
    99                                 iomodel->FetchData(&control_scaling_factors,NULL,NULL,"md.autodiff.independent_scaling_factors");
    100                                 parameters->AddObject(new DoubleVecParam(InversionControlScalingFactorsEnum,control_scaling_factors,num_independent_objects));
     91                        /*Step 2: create cost functions (dependent)*/
     92                        iomodel->FindConstant(&cm_responses,&num_costfunc,"md.autodiff.dependent_object_names");
     93                        if(num_costfunc<1) _error_ ("no cost functions found");
     94                        int* costfunc_enums=xNew<int>(num_costfunc);
     95                        for(int i=0;i<num_costfunc;i++){
     96                                costfunc_enums[i]=StringToEnumx(cm_responses[i]);
     97                                xDelete<char>(cm_responses[i]);
     98                        }
     99                        xDelete<char*>(cm_responses);
     100                        parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,costfunc_enums,num_costfunc));
     101                        xDelete<int>(costfunc_enums);
    101102
    102                                 /*cleanup*/
    103                                 for(int i=0;i<num_independent_objects;i++){
    104                                         xDelete<char>(names[i]);
    105                                 }
    106                                 xDelete<char*>(names);
    107                                 xDelete<int>(ind_enums);       
    108                                 xDelete<int>(costfunc_enums);
    109                                 break;
     103                        break;
    110104                        }
    111105                        default:
Note: See TracChangeset for help on using the changeset viewer.