Changeset 25320


Ignore:
Timestamp:
07/31/20 10:31:31 (5 years ago)
Author:
Mathieu Morlighem
Message:

BUG: fixed AD

File:
1 edited

Legend:

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

    r25317 r25320  
    215215        int*                            types                                                   = NULL;
    216216        int*                            control_sizes                           = NULL;
    217         int*                            M_all                                                   = NULL;
    218217        IssmDouble*             independent                                     = NULL;
    219218        IssmDouble*             independents_fullmin    = NULL;
     
    233232        iomodel->FetchData(&types,NULL,NULL,"md.autodiff.independent_object_types");
    234233
    235         M_all = xNew<int>(num_independent_objects);
     234        int* M_all = xNew<int>(num_independent_objects);
     235        int* N_all = xNew<int>(num_controls);
     236        int* Interp_all = xNew<int>(num_controls);
    236237
    237238        /*create independent objects, and at the same time, fetch the corresponding independent variables,
     
    277278                        else M_all[i]=M;
    278279
     280                        if(M_all[i]==iomodel->numberofvertices){
     281                                Interp_all[i] = P1Enum;
     282                        }
     283                        else if(M_all[i]==iomodel->numberofelements){
     284                                Interp_all[i] = P0Enum;
     285                        }
     286                        else{
     287                                _error_("Control size not supported");
     288                        }
     289                        N_all[i] = N;
     290
     291
    279292                        for(int j=0;j<elements->Size();j++){
    280293                                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
     
    290303                }
    291304        }
    292         parameters->AddObject(new IntVecParam(ControlInputSizeNEnum,control_sizes,num_independent_objects));
     305        parameters->AddObject(new IntVecParam(ControlInputSizeNEnum,N_all,num_independent_objects));
    293306        parameters->AddObject(new IntVecParam(ControlInputSizeMEnum,M_all,num_independent_objects));
     307        parameters->AddObject(new IntVecParam(ControlInputInterpolationEnum,Interp_all,num_controls));
    294308
    295309        /*cleanup*/
     
    300314        xDelete<int>(types);
    301315        xDelete<int>(M_all);
     316        xDelete<int>(N_all);
     317        xDelete<int>(Interp_all);
    302318        xDelete<IssmDouble>(independents_fullmin);
    303319        xDelete<IssmDouble>(independents_fullmax);
Note: See TracChangeset for help on using the changeset viewer.