Changeset 13509


Ignore:
Timestamp:
10/02/12 16:33:22 (12 years ago)
Author:
Eric.Larour
Message:

NEW: new fos_reverse driver capability.

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp

    r13483 r13509  
    4545                if(strcmp(autodiff_driver,"fos_forward")==0){
    4646                        parameters->AddObject(iomodel->CopyConstantObject(AutodiffFosForwardIndexEnum));
     47                }
     48                else if(strcmp(autodiff_driver,"fos_reverse")==0){
     49                        parameters->AddObject(iomodel->CopyConstantObject(AutodiffFosReverseIndexEnum));
    4750                }
    4851                else if(strcmp(autodiff_driver,"fov_forward")==0){
  • issm/trunk-jpl/src/m/classes/autodiff.m

    r13505 r13509  
    121121                        end
    122122                        %}}}
     123                        %if driver is fos_reverse, build index:  {{{
     124                        if strcmpi(obj.driver,'fos_reverse'),
     125                                index=0;
     126                               
     127                                for i=1:num_dependent_objects,
     128                                        dep=obj.dependents{i};
     129                                        if ~isnan(dep.fos_reverse_index),
     130                                                index=index+dep.fos_reverse_index;
     131                                                break;
     132                                        else
     133                                                if strcmpi(dep.type,'scalar'),
     134                                                        index=index+1;
     135                                                else
     136                                                        index=index+dep.nods;
     137                                                end
     138                                        end
     139                                end
     140                                index=index-1; %get c-index numbering going
     141                                WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer');
     142                        end
     143                        %}}}
    123144                        %if driver is fov_forward, build indices:  {{{
    124145                        if strcmpi(obj.driver,'fov_forward'),
  • issm/trunk-jpl/src/m/classes/dependent.m

    r13483 r13509  
    88                name                 = '';
    99                type                 = '';
     10                fos_reverse_index    = NaN;
    1011                exp                  = '';
    1112                segments             = [];
    1213                index                = -1;
     14                nods                 = 0;
    1315        end
    1416        methods
     
    2325                         obj.segments=getfieldvalue(options,'segments',[]);
    2426                         obj.index=getfieldvalue(options,'index',-1);
     27                         obj.nods=getfieldvalue(options,'nods',0);
    2528
    2629                         %if name is mass flux:
     
    4952                                end
    5053                        end
     54                        if ~isnan(obj.fos_reverse_index),
     55                                if ~strcmpi(driver,'fos_reverse'),
     56                                        error('cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!');
     57                                end
     58                                if obj.nods==0,
     59                                        error('ependent checkconsistency error: nods should be set to the size of the independent variable');
     60                                end
     61
     62                        end
    5163
    5264                end % }}}
     
    5668                        fielddisplay(obj,'name','variable name (must match corresponding Enum)');
    5769                        fielddisplay(obj,'type','type of variable (''vertex'' or ''scalar'')');
     70                       
     71                        if ~isnan(obj.fos_reverse_index),
     72                                fielddisplay(obj,'fos_reverse_index','index for fos_reverse driver of ADOLC');
     73                        end
    5874                        if ~isempty(obj.exp),
    5975                                fielddisplay(obj,'exp','file needed to compute dependent variable');
Note: See TracChangeset for help on using the changeset viewer.