Changeset 25578


Ignore:
Timestamp:
09/17/20 12:08:07 (5 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixing problem with dependents that are COPIED from femmodel, creating confusion

Location:
issm/trunk-jpl/src/c/cores
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp

    r25558 r25578  
    271271        int          num_dependents;
    272272        IssmPDouble *dependents;
    273         DataSet     *dependent_objects = NULL;
    274         IssmDouble   J                 = 0.;
     273        IssmDouble   J = 0.;
     274        DataSet     *dependent_objects = ((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
    275275        femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
    276         femmodel->parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
    277276
    278277        /*Go through our dependent variables, and compute the response:*/
     
    471470        xDelete<IssmPDouble>(dependents);
    472471        xDelete<IssmPDouble>(totalgradient);
    473         delete dependent_objects;
    474472}/*}}}*/
    475473void controladm1qn3_core(FemModel* femmodel){/*{{{*/
  • issm/trunk-jpl/src/c/cores/controlvalidation_core.cpp

    r25558 r25578  
    209209        int         num_dependents;
    210210        IssmPDouble *dependents;
    211         DataSet*    dependent_objects=NULL;
     211        DataSet     *dependent_objects = ((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
    212212        IssmDouble      J=0.;
    213213        femmodel->parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
    214         femmodel->parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
    215214
    216215        /*Go through our dependent variables, and compute the response:*/
     
    340339        xDelete<double>(X0);
    341340        xDelete<IssmDouble>(scaling_factors);
    342         #if defined(_HAVE_CODIPACK_)
    343         delete dependent_objects;
    344         #endif
    345341}
  • issm/trunk-jpl/src/c/cores/transient_core.cpp

    r25575 r25578  
    6262        #endif
    6363
    64         DataSet* dependent_objects=NULL;
    65         if(iscontrol && isautodiff){
    66                 femmodel->parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
    67         }
    68 
    6964        if(isslr) sealevelrise_core_geometry(femmodel);
    7065
     
    128123                if(iscontrol && isautodiff){
    129124                        /*Go through our dependent variables, and compute the response:*/
     125                        DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
    130126                        for(Object* & object:dependent_objects->objects){
    131127                                DependentObject* dep=(DependentObject*)object;
     
    138134
    139135        if(!iscontrol || !isautodiff) femmodel->RequestedDependentsx();
    140         if(iscontrol && isautodiff) femmodel->parameters->SetParam(dependent_objects,AutodiffDependentObjectsEnum);
    141 
    142136}/*}}}*/
    143137void transient_step(FemModel* femmodel){/*{{{*/
     
    277271        int        step,timestepping;
    278272        int        recording_frequency;
    279         DataSet*   dependent_objects=NULL;
     273
     274        /*Get rank*/
     275        int my_rank = IssmComm::GetRank();
    280276
    281277        /*then recover parameters common to all solutions*/
     
    286282        femmodel->parameters->FindParam(&timestepping,TimesteppingTypeEnum);
    287283        femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
    288         femmodel->parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
    289284        femmodel->parameters->FindParam(&recording_frequency,SettingsRecordingFrequencyEnum); _assert_(recording_frequency>0);
    290285        if(isslr) sealevelrise_core_geometry(femmodel);
     
    338333
    339334                /*Go through our dependent variables, and compute the response:*/
     335                DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
    340336                for(Object* & object:dependent_objects->objects){
    341337                        DependentObject* dep=(DependentObject*)object;
     
    378374        femmodel->Marshall(hdl_regin);
    379375        delete hdl_regin;
    380         for(int i=0; i < Xsize; i++) tape_codi.registerInput(X[i]);
    381 
     376        if(my_rank==0) for(int i=0; i < Xsize; i++) tape_codi.registerInput(X[i]);
    382377        SetControlInputsFromVectorx(femmodel,X);
    383378
    384379        IssmDouble J = 0.;
    385380        if(0){
     381                DataSet* dependent_objects=((DataSetParam*)femmodel->parameters->FindParamObject(AutodiffDependentObjectsEnum))->value;
    386382                for(Object* & object:dependent_objects->objects){
    387383                        DependentObject* dep=(DependentObject*)object;
Note: See TracChangeset for help on using the changeset viewer.