Changeset 21642


Ignore:
Timestamp:
03/29/17 10:04:19 (8 years ago)
Author:
schlegel
Message:

CHG: update to fix requested_outputs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m

    r19096 r21642  
    2121       
    2222        %gather geometry and timestepping as dimensions
    23         Duration=md.timestepping.final_time-md.timestepping.start_time;
    24         if Duration>0 && md.timestepping.time_step*md.settings.output_frequency>0,
    25                 StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency);
     23        resfields=fieldnames(md.results);
     24        Duration=size(eval(['md.results. ' resfields{1} ]),2);
     25        if Duration>0,
     26                StepNum=Duration;
    2627        else
    2728                StepNum=1;
    2829  end                                                   
     30
     31   dimlist=[40,2,md.mesh.numberofelements,md.mesh.numberofvertices,size(md.mesh.elements,2)];
    2932 
    3033        %define netcdf dimensions
    31         DimSize(1).index=netcdf.defDim(ncid,'Dimension1',md.mesh.numberofelements);
    32         DimSize(2).index=netcdf.defDim(ncid,'Dimension2',md.mesh.numberofvertices);
    33         DimSize(3).index=netcdf.defDim(ncid,'Dimension3',size(md.mesh.elements,2));
    34         DimSize(4).index=netcdf.defDim(ncid,'Dimension4',StepNum);
    35         DimSize(5).index=netcdf.defDim(ncid,'Dimension5',40);
    36         DimSize(6).index=netcdf.defDim(ncid,'Dimension6',2);
    37        
    38         for i=1:length(DimSize),
    39                 [DimSize(i).name,DimSize(i).value]=netcdf.inqDim(ncid,DimSize(i).index);
    40                 DimValue(i)=DimSize(i).value;% putting vallues in an array for
    41                                  % further use
    42   end
    43  
     34        DimSize(1).index=netcdf.defDim(ncid,'Dimension1',StepNum);
     35        [DimSize(1).name,DimSize(1).value]=netcdf.inqDim(ncid,DimSize(1).index);
     36        DimValue(1)=DimSize(1).value;
     37        for i=1:5
     38                if sum(dimlist(i) == DimValue) == 0
     39                        DimSize(i+1).index=netcdf.defDim(ncid,['Dimension' num2str(i+1)],dimlist(i));
     40                        [DimSize(i+1).name,DimSize(i+1).value]=netcdf.inqDim(ncid,DimSize(i+1).index);
     41                        DimValue(i+1)=DimSize(i+1).value;
     42                end
     43        end
     44
    4445        %Needs a first turn arround for var def
    4546 
     
    231232                        else
    232233                                dimindex=find(dimexist);
     234                                DimValue
    233235                                if DimSize(dimindex).value~=currentdim,
    234236                                        error('Indexation problem with the dimension structure')
     
    239241  end
    240242        if istime,
    241                 dims=[dims DimSize(4).index];%adding the time dimension if necessary
     243                dims=[dims DimSize(1).index];%adding the time dimension if necessary
    242244  end
    243245        %if we have a cell variable we need to add a stringlength dimension
    244246        if isa(Var,'cell') || isa(Var,'struct'),
    245                 dims=[DimSize(5).index dims]
     247                if DimValue(2)~=40
     248                        dims=[DimSize(1).index dims];
     249                else
     250                        dims=[DimSize(2).index dims];
     251                end
    246252  end
    247253end
Note: See TracChangeset for help on using the changeset viewer.