Changeset 13429
- Timestamp:
- 09/24/12 22:24:10 (12 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/m/classes/autodiff.m ¶
r13291 r13429 9 9 dependents = {}; 10 10 independents = {}; 11 driver = 'fos_forward'; 11 12 end 12 13 methods … … 24 25 function md = checkconsistency(obj,md,solution,analyses) % {{{ 25 26 26 %Early return 27 if ~obj.isautodiff, return; end 27 %Early return 28 if ~obj.isautodiff, return; end 29 30 %Driver value: 31 md = checkfield(md,'autodiff.driver','values',{'fos_forward'}); 28 32 29 33 end % }}} … … 31 35 disp(sprintf(' automatic differentiation parameters:')); 32 36 fielddisplay(obj,'isautodiff','indicates if the automatic differentiation is activated'); 33 fielddisplay(obj,'dependents','list of dependent variables ; ex: {''Thickness'',''FrictionCoefficient''}'); 34 fielddisplay(obj,'independents','list of independent variables ; ex: {''IceVolume'',''MassFlux''}'); 37 fielddisplay(obj,'dependents','list of dependent variables'); 38 fielddisplay(obj,'independents','list of independent variables'); 39 fielddisplay(obj,'driver','ADOLC driver'); 35 40 end % }}} 36 41 function marshall(obj,fid) % {{{ 37 42 38 43 WriteData(fid,'object',obj,'fieldname','isautodiff','format','Boolean'); 44 WriteData(fid,'object',obj,'fieldname','driver','format','String'); 39 45 40 46 %early return … … 42 48 43 49 %process dependent variables 44 num_dependents=numel(obj.dependents); 45 WriteData(fid,'data',num_dependents,'enum',AutodiffNumDependentsEnum(),'format','Integer'); 46 47 if(num_dependents), 48 data=zeros(1,num_dependents); 49 for i=1:num_dependents, 50 data(i)=StringToEnum(obj.dependents{i}); 50 num_dependent_objects=numel(obj.dependents); 51 WriteData(fid,'data',num_dependent_objects,'enum',AutodiffNumDependentObjectsEnum(),'format','Integer'); 52 53 if(num_dependent_objects), 54 names=zeros(num_dependent_objects,1); 55 types=zeros(num_dependent_objects,1); 56 57 for i=1:num_dependent_objects, 58 dep=obj.dependents{i}; 59 60 names(i)=StringToEnum(dep.name); 61 types(i)=dep.typetoscalar(); 51 62 end 52 WriteData(fid,'data',data,'enum',AutodiffDependentsEnum(),'format','DoubleMat','mattype',3); 63 WriteData(fid,'data',names,'enum',AutodiffDependentObjectNamesEnum(),'format','IntMat','mattype',3); 64 WriteData(fid,'data',types,'enum',AutodiffDependentObjectTypesEnum(),'format','IntMat','mattype',3); 53 65 end 54 66 67 55 68 %process independent variables 56 num_independents=numel(obj.independents); 57 WriteData(fid,'data',num_independents,'enum',AutodiffNumIndependentsEnum(),'format','Integer'); 58 59 if(num_independents) 60 data=zeros(1,num_independents); 61 for i=1:num_independents, 62 data(i)=StringToEnum(obj.independents{i}); 69 num_independent_objects=numel(obj.independents); 70 WriteData(fid,'data',num_independent_objects,'enum',AutodiffNumIndependentObjectsEnum(),'format','Integer'); 71 72 if(num_independent_objects), 73 names=zeros(num_independent_objects,1); 74 types=zeros(num_independent_objects,1); 75 76 for i=1:num_independent_objects, 77 indep=obj.independents{i}; 78 79 names(i)=StringToEnum(indep.name); 80 types(i)=indep.typetoscalar(); 63 81 end 64 WriteData(fid,'data',data,'enum',AutodiffIndependentsEnum(),'format','DoubleMat','mattype',3); 82 WriteData(fid,'data',names,'enum',AutodiffIndependentObjectNamesEnum(),'format','IntMat','mattype',3); 83 WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3); 65 84 end 66 85 86 %if driver is fos_forward, build index: 87 if strcmpi(obj.driver,'fos_forward'), 88 index=0; 89 90 for i=1:num_independent_objects, 91 indep=obj.independents{i}; 92 if ~isnan(indep.fos_forward_index), 93 index=index+indep.fos_forward_index; 94 break; 95 else 96 if strcmpi(indep.type,'scalar'), 97 index=index+1; 98 else 99 index=index+indep.nods; 100 end 101 end 102 end 103 WriteData(fid,'data',index-1,'enum',AutodiffFosForwardIndexEnum(),'format','Integer'); %c-index numbering. 104 end 67 105 end % }}} 68 106 end
Note:
See TracChangeset
for help on using the changeset viewer.