Changeset 27678


Ignore:
Timestamp:
04/05/23 05:57:25 (2 years ago)
Author:
Mathieu Morlighem
Message:

CHG: preparing ground for param inversion

File:
1 edited

Legend:

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

    r27666 r27678  
    250250                        IssmDouble*     independents_max = NULL;
    251251
     252                        /*Fetch required data*/
    252253                        FieldAndEnumFromCode(&input_enum,&iofieldname,names[i]);
    253 
    254                         /*Fetch required data*/
    255254                        iomodel->FetchData(&independent,&M,&N,iofieldname);
    256255                        _assert_(independent && N==control_sizes[i]);
     256                        xDelete<char>(iofieldname);
    257257
    258258                        independents_min = NULL; independents_min = xNew<IssmDouble>(M*N);
     
    266266                        if(N!=1) M_all[i]=M-1;
    267267
    268                         if(M_all[i]==iomodel->numberofvertices){
    269                                 Interp_all[i] = P1Enum;
     268                        if(IsInputEnum(input_enum)){
     269                                if(M_all[i]==iomodel->numberofvertices){
     270                                        Interp_all[i] = P1Enum;
     271                                }
     272                                else if(M_all[i]==iomodel->numberofelements){
     273                                        Interp_all[i] = P0Enum;
     274                                }
     275                                else{
     276                                        _error_("Control size not supported");
     277                                }
     278
     279                                for(Object* & object : elements->objects){
     280                                        Element* element=xDynamicCast<Element*>(object);
     281                                        element->ControlInputCreate(independent,independents_min,independents_max,inputs,iomodel,M,N,1.,input_enum,i+1);
     282                                }
    270283                        }
    271                         else if(M_all[i]==iomodel->numberofelements){
    272                                 Interp_all[i] = P0Enum;
    273                         }
    274                         else{
    275                                 _error_("Control size not supported");
    276                         }
    277 
    278                         for(Object* & object : elements->objects){
    279                                 Element* element=xDynamicCast<Element*>(object);
    280                                 element->ControlInputCreate(independent,independents_min,independents_max,inputs,iomodel,M,N,1.,input_enum,i+1);
     284                        else if(IsParamEnum(input_enum)){
     285                                _error_("not supported yet");
    281286                        }
    282287                        xDelete<IssmDouble>(independent);
    283288                        xDelete<IssmDouble>(independents_min);
    284289                        xDelete<IssmDouble>(independents_max);
    285                         xDelete<char>(iofieldname);
    286290
    287291                }
Note: See TracChangeset for help on using the changeset viewer.