Changeset 864 for trunk/src/sub_field.m


Ignore:
Timestamp:
Feb 6, 2015, 7:55:10 PM (9 years ago)
Author:
sommeria
Message:

bug_repaired

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sub_field.m

    r862 r864  
    129129for ilist=1:numel(Field_1.ListVarName)
    130130    % case of variable with a single dimension
    131     OldDimName=Field_1.VarDimName{ilist};
    132     if ischar(OldDimName), OldDimName={OldDimName}; end% transform char string to cell if relevant
    133     if numel(OldDimName)==1
    134         OldDim=Field_1.(Field_1.ListVarName{ilist});% get variable
    135         %look for the existence of the variable OldDim in the first field Field
    136         for i1=1:numel(Field.ListVarName)
    137             if  isequal(Field.(Field.ListVarName{i1}),OldDim) &&...
    138                    ((isempty(ProjModeRequest{i1}) && isempty(ProjModeRequest_1{ilist}))  || strcmp(ProjModeRequest{i1},ProjModeRequest_1{ilist}))               
    139                ind_remove(ilist)=1;
    140                NewDimName=Field.VarDimName{i1};
    141                if ischar(NewDimName), NewDimName={NewDimName}; end %transform char chain to cell if needed
    142                Field_1.VarDimName=regexprep_r(Field_1.VarDimName,['^' OldDimName{1} '$'],NewDimName{1});% change the var name of Field_1 to the corresponding var name of Field
     131    if ~isempty(regexp(Field_1.VarAttribute{ilist}.Role,'^coord'))
     132        OldDimName=Field_1.VarDimName{ilist};
     133        if ischar(OldDimName), OldDimName={OldDimName}; end% transform char string to cell if relevant
     134        if numel(OldDimName)==1
     135            OldDim=Field_1.(Field_1.ListVarName{ilist});% get variable
     136            %look for the existence of the variable OldDim in the first field Field
     137            for i1=1:numel(Field.ListVarName)
     138                if  isequal(Field.(Field.ListVarName{i1}),OldDim) &&...
     139                        ((isempty(ProjModeRequest{i1}) && isempty(ProjModeRequest_1{ilist}))  || strcmp(ProjModeRequest{i1},ProjModeRequest_1{ilist}))
     140                    ind_remove(ilist)=1;
     141                    NewDimName=Field.VarDimName{i1};
     142                    if ischar(NewDimName), NewDimName={NewDimName}; end %transform char chain to cell if needed
     143                    Field_1.VarDimName=regexprep_r(Field_1.VarDimName,['^' OldDimName{1} '$'],NewDimName{1});% change the var name of Field_1 to the corresponding var name of Field
     144                end
    143145            end
    144146        end
     
    152154ListVarNameNew=Field_1.ListVarName;
    153155check_rename=zeros(size(ListVarNameNew));
     156check_remove=zeros(size(ListVarNameNew));
    154157for ilist=1:numel(ListVarNameNew)
    155158    VarName=Field_1.ListVarName{ilist};
    156159    ind_prev=find(strcmp(ListVarNameNew{ilist},Field.ListVarName),1);% look for duplicated variable name
    157160    if ~isempty(ind_prev)% variable name exists in Field
    158         check_rename(ilist)=1;
    159         ListVarNameNew{ilist}=[ListVarNameNew{ilist} '_1'];
     161%         check_rename(ilist)=0;
     162        check_remove(ilist)=1;
     163        if isfield(Field_1.VarAttribute{ilist},'Role')&& ismember(Field_1.VarAttribute{ilist}.Role,{'scalar','vector_x','vector_y'})
     164                            ListVarNameNew{ilist}=[ListVarNameNew{ilist} '_1'];
     165                            check_rename(ilist)=1;
     166        end
    160167    end
    161168    SubData.ListVarName=[SubData.ListVarName ListVarNameNew{ilist}];
    162169    SubData.VarDimName=[SubData.VarDimName Field_1.VarDimName(ilist)];
     170    Field_1.VarAttribute{ilist}.CheckSub=1;
     171    SubData.VarAttribute=[SubData.VarAttribute Field_1.VarAttribute{ilist}];
    163172    SubData.(ListVarNameNew{ilist})=Field_1.(VarName);% teke the values of the old variable for the newly named one
    164173    %SubData.VarAttribute=[SubData.VarAttribute Field_1.VarDimName(ilist)];
Note: See TracChangeset for help on using the changeset viewer.