Changeset 18676


Ignore:
Timestamp:
10/24/14 14:40:01 (10 years ago)
Author:
seroussi
Message:

CHG: only take necessary observations in inversions

File:
1 edited

Legend:

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

    r18604 r18676  
    1212
    1313        /*Intermediary*/
    14         int       control;
     14        int       control,cost_function;
    1515        Element  *element = NULL;
    1616        Material *material = NULL;
    17         int       num_control_type;
     17        int       num_control_type,num_cost_functions;
    1818        bool      control_analysis;
    1919
     
    2525        if(!control_analysis) return;
    2626
     27        iomodel->FetchData(5,InversionControlParametersEnum,InversionCostFunctionsEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
     28
    2729        /*Fetch data needed: */
    28         iomodel->FetchDataToInput(elements,InversionVxObsEnum,0.);
    29         iomodel->FetchDataToInput(elements,InversionVyObsEnum,0.);
    30         iomodel->FetchDataToInput(elements,InversionThicknessObsEnum,0.);
    31         iomodel->FetchDataToInput(elements,InversionSurfaceObsEnum,0.);
    32 
    33         iomodel->FetchData(5,InversionControlParametersEnum,InversionCostFunctionsEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
     30        iomodel->Constant(&num_cost_functions,InversionNumCostFunctionsEnum);
     31        for(int i=0;i<num_cost_functions;i++){
     32                cost_function= reCast<int,IssmDouble>(iomodel->Data(InversionCostFunctionsEnum)[i]);
     33                if(cost_function==ThicknessAbsMisfitEnum) iomodel->FetchDataToInput(elements,InversionThicknessObsEnum,0.);
     34                else if(cost_function==SurfaceAbsVelMisfitEnum || cost_function==SurfaceRelVelMisfitEnum || cost_function==SurfaceLogVelMisfitEnum || cost_function==SurfaceLogVxVyMisfitEnum || cost_function==SurfaceAverageVelMisfitEnum){
     35                        iomodel->FetchDataToInput(elements,InversionVxObsEnum,0.);
     36                        iomodel->FetchDataToInput(elements,InversionVyObsEnum,0.);
     37                }
     38        }
     39        //iomodel->FetchDataToInput(elements,InversionSurfaceObsEnum,0.);
    3440
    3541        for(int i=0;i<num_control_type;i++){
Note: See TracChangeset for help on using the changeset viewer.