Changeset 21642
- Timestamp:
- 03/29/17 10:04:19 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.m
r19096 r21642 21 21 22 22 %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; 26 27 else 27 28 StepNum=1; 28 29 end 30 31 dimlist=[40,2,md.mesh.numberofelements,md.mesh.numberofvertices,size(md.mesh.elements,2)]; 29 32 30 33 %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 44 45 %Needs a first turn arround for var def 45 46 … … 231 232 else 232 233 dimindex=find(dimexist); 234 DimValue 233 235 if DimSize(dimindex).value~=currentdim, 234 236 error('Indexation problem with the dimension structure') … … 239 241 end 240 242 if istime, 241 dims=[dims DimSize( 4).index];%adding the time dimension if necessary243 dims=[dims DimSize(1).index];%adding the time dimension if necessary 242 244 end 243 245 %if we have a cell variable we need to add a stringlength dimension 244 246 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 246 252 end 247 253 end
Note:
See TracChangeset
for help on using the changeset viewer.