Ignore:
Timestamp:
Jun 20, 2012, 2:14:10 PM (12 years ago)
Author:
sommeria
Message:

a few bug repairs and update in the series fcts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/series/aver_stat.m

    r457 r462  
    6767%% select different modes,  RUN, parameter input, BATCH
    6868% BATCH  case: read the xml file for batch case
    69 ParamOut=Param; %default output
    7069if ischar(Param)
    71     if strcmp(Param,'input?')
    72         checkrun=1;% will inly search input parameters (preparation of BATCH mode)
    73     else
    7470        Param=xml2struct(Param);
    7571        checkrun=0;
    76     end
    7772% RUN case: parameters introduced as the input structure Param
    7873else
    7974    hseries=guidata(Param.hseries);%handles of the GUI series
    8075    WaitbarPos=get(hseries.waitbar_frame,'Position');%position of the waitbar on the GUI series
    81     checkrun=2; % indicate the RUN option is used
    82 end
     76    if isfield(Param,'Specific')&& strcmp(Param.Specific,'?')
     77        checkrun=1;% will only search interactive input parameters (preparation of BATCH mode)
     78    else
     79        checkrun=2; % indicate the RUN option is used
     80    end
     81end
     82ParamOut=Param; %default output
    8383
    8484%% root input file(s) and type
     
    240240
    241241%% Initiate output fields
    242 %initiate the output structure as a copy of the first input one (reproduce fields)
    243 [DataOut,ParamOut,errormsg] = read_field(filecell{1,1},FileType{1},InputFields{1},1);
    244 if ~isempty(errormsg)
    245     msgbox_uvmat('ERROR',['error reading ' filecell{1,1} ': ' errormsg])
    246     return
    247 end
    248 time_1=[];
    249 if isfield(DataOut,'Time')
    250     time_1=DataOut.Time(1);
    251 end
    252 if CheckNc{iview}
    253     if isempty(strcmp('Conventions',DataOut.ListGlobalAttribute))
    254         DataOut.ListGlobalAttribute=['Conventions' DataOut.ListGlobalAttribute];
    255     end
    256     DataOut.Conventions='uvmat';
    257     DataOut.ListGlobalAttribute=[DataOut.ListGlobalAttribute {Param.Action}];
    258     ActionKey='Action';
    259     while isfield(DataOut,ActionKey)
    260         ActionKey=[ActionKey '_1'];
    261     end
    262     DataOut.(ActionKey)=Param.Action;
    263     DataOut.ListGlobalAttribute=[DataOut.ListGlobalAttribute {ActionKey}];
    264     if isfield(DataOut,'Time')
    265         DataOut.ListGlobalAttribute=[DataOut.ListGlobalAttribute {'Time','Time_end'}];
    266     end
    267 end
     242% %initiate the output structure as a copy of the first input one (reproduce fields)
     243% [DataOut,ParamOut,errormsg] = read_field(filecell{1,1},FileType{1},InputFields{1},1);
     244% if ~isempty(errormsg)
     245%     msgbox_uvmat('ERROR',['error reading ' filecell{1,1} ': ' errormsg])
     246%     return
     247% end
     248% time_1=[];
     249% if isfield(DataOut,'Time')
     250%     time_1=DataOut.Time(1);
     251% end
     252% if CheckNc{iview}
     253%     if isempty(strcmp('Conventions',DataOut.ListGlobalAttribute))
     254%         DataOut.ListGlobalAttribute=['Conventions' DataOut.ListGlobalAttribute];
     255%     end
     256%     DataOut.Conventions='uvmat';
     257%     DataOut.ListGlobalAttribute=[DataOut.ListGlobalAttribute {Param.Action}];
     258%     ActionKey='Action';
     259%     while isfield(DataOut,ActionKey)
     260%         ActionKey=[ActionKey '_1'];
     261%     end
     262%     DataOut.(ActionKey)=Param.Action;
     263%     DataOut.ListGlobalAttribute=[DataOut.ListGlobalAttribute {ActionKey}];
     264%     if isfield(DataOut,'Time')
     265%         DataOut.ListGlobalAttribute=[DataOut.ListGlobalAttribute {'Time','Time_end'}];
     266%     end
     267% end
    268268
    269269%% MAIN LOOP ON SLICES
     
    274274    nbmissing=0;
    275275   
    276    %initiate result fields
    277    for ivar=1:length(DataOut.ListVarName)
    278        DataOut.(DataOut.ListVarName{ivar})=0; % initialise all fields to zero
    279    end
    280 
     276    %initiate result fields
     277   for ivar=1:length(DataOut.ListVarName)
     278       DataOut.(DataOut.ListVarName{ivar})=0; % initialise all fields to zero
     279   end
     280   
    281281    %%%%%%%%%%%%%%%% loop on field indices %%%%%%%%%%%%%%%%
    282282    for index=index_slice
     
    304304        %%%%%%%%%%%% END STANDARD PART  %%%%%%%%%%%%
    305305        % EDIT FROM HERE
    306 
    307         if isempty(errormsg)     
     306       
     307        if isempty(errormsg)
    308308            % coordinate transform (or other user defined transform)
    309309            if ~isempty(transform_fct)
     
    339339            %field projection on an object
    340340            if Param.CheckObject
    341                 [Field,errormsg]=proj_field(Field,ProjObject);
     341                [Field,errormsg]=proj_field(Field,Param.ProjObject);
    342342                if ~isempty(errormsg)
    343343                    msgbox_uvmat('ERROR',['error in aver_stat/proj_field:' errormsg])
     
    349349            %%%%%%%%%%%% MAIN RUNNING OPERATIONS  %%%%%%%%%%%%
    350350            %update sum
    351             for ivar=1:length(Field.ListVarName)
    352                 VarName=Field.ListVarName{ivar};
    353                 sizmean=size(DataOut.(VarName));
    354                 siz=size(Field.(VarName));
    355                 if ~isequal(DataOut.(VarName),0)&& ~isequal(siz,sizmean)
    356                     msgbox_uvmat('ERROR',['unequal size of input field ' VarName ', need to project  on a grid'])
    357                     return
    358                 else
    359                     DataOut.(VarName)=DataOut.(VarName)+ double(Field.(VarName)); % update the sum
     351            if nbfiles==1 %first field
     352                time_1=[];
     353                if isfield(Field,'Time')
     354                    time_1=Field.Time(1);
     355                end
     356                DataOut=Field;%default
     357                for ivar=1:length(Field.ListVarName)
     358                    VarName=Field.ListVarName{ivar};
     359                    DataOut.(VarName)=double(DataOut.(VarName));
     360                end
     361            else   %current field
     362                for ivar=1:length(Field.ListVarName)
     363                    VarName=Field.ListVarName{ivar};
     364                    sizmean=size(DataOut.(VarName));
     365                    siz=size(Field.(VarName));
     366                    if ~isequal(DataOut.(VarName),0)&& ~isequal(siz,sizmean)
     367                        msgbox_uvmat('ERROR',['unequal size of input field ' VarName ', need to project  on a grid'])
     368                        return
     369                    else
     370                        DataOut.(VarName)=DataOut.(VarName)+ double(Field.(VarName)); % update the sum
     371                    end
    360372                end
    361373            end
    362374            %%%%%%%%%%%%   END MAIN RUNNING OPERATIONS  %%%%%%%%%%%%
    363375        else
    364             display(errormsg) 
     376            display(errormsg)
    365377        end
    366378    end
     
    374386        msgbox_uvmat('WARNING',[num2str(nbmissing) ' input files are missing or skipted'])
    375387    end
    376     if isempty(time) % time is read from files 
     388    if isempty(time) % time is read from files
    377389        if isfield(Field,'Time')
    378390            time_end=Field.Time(1);%last time read
Note: See TracChangeset for help on using the changeset viewer.