Ignore:
Timestamp:
09/24/12 22:26:49 (12 years ago)
Author:
Eric.Larour
Message:

CHG: new way of handling independent and dependent objects. We create a dataset for
each of these objects, so that we do not confuse num_dependents and num_dependent_objects,
same thing for indepedndents. Makes handling of Autodiff drivers easier too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/RequestedDependentsx/RequestedDependentsx.cpp

    r13285 r13432  
    1414
    1515        int         i;
    16         int         output_enum;
    1716        bool        isautodiff      = false;
    1817        IssmDouble  output_value;
    19         Element    *element         = NULL;
    20         int        *dependent_enums = NULL;
    2118
    2219        int         num_dependents;
    2320        IssmPDouble *dependents;
     21        DataSet*    dependent_objects=NULL;
    2422
    2523        /*AD mode on?: */
     
    2927                #ifdef _HAVE_ADOLC_
    3028                parameters->FindParam(&num_dependents,AutodiffNumDependentsEnum);
     29                parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
    3130                if(num_dependents){
    3231                        dependents=xNew<IssmPDouble>(num_dependents);
    33                         parameters->FindParam(&dependent_enums,&num_dependents,AutodiffDependentsEnum);
    3432
    3533                        /*Go through our dependent variables, and compute the response:*/
    36                         for(i=0;i<num_dependents;i++){
    37                                 Responsex(&output_value,elements,nodes,vertices,loads,materials,parameters,dependent_enums[i],false,0);
     34                        for(i=0;i<dependent_objects->Size();i++){
     35                                DependentObject* dep=(DependentObject*)dependent_objects->GetObjectByOffset(i);
     36                                Responsex(&output_value,elements,nodes,vertices,loads,materials,parameters,dep->name,false,0);
    3837                                output_value>>=dependents[i];
    3938                        }
    4039                }
     40                delete dependent_objects;
    4141                #else
    4242                _error_("Should not be requesting dependents when an AD library is not available!");
Note: See TracChangeset for help on using the changeset viewer.