Changeset 675 for trunk/src/mask_proj.m


Ignore:
Timestamp:
Aug 27, 2013, 11:25:21 PM (11 years ago)
Author:
sommeria
Message:

various bugs corrected

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/mask_proj.m

    r672 r675  
    3131end
    3232[Npy,Npx]=size(MaskData.A);
    33 DX=(MaskData.AX(2)-MaskData.AX(1))/(Npx-1);
    34 DY=(MaskData.AY(2)-MaskData.AY(1))/(Npy-1);
     33
    3534for icell=1:numel(CellInfo)
    3635    if NbDimArray(icell)==2
    37         XName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(1)};
    38         YName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(2)};
    3936        if isfield(CellInfo{icell},'VarIndex_errorflag')
    4037            FFName=FieldData.ListVarName{CellInfo{icell}.VarIndex_errorflag};
     38            check_new_error_flag=0;
    4139        else
    4240            FFName='FF';%default error (mask) flag name (if not already used)
     
    4947            end
    5048            ProjData.ListVarName=[FieldData.ListVarName {FFName}];
    51             ProjData.VarDimName=[FieldData.VarDimName FieldData.VarDimName(CellInfo{icell}.CoordIndex(1))];
    52             ProjData.VarAttribute{numel(FieldData.VarDimName)}.Role='errorflag';
     49            ProjData.VarAttribute{numel(ProjData.ListVarName)}.Role='errorflag';
     50            check_new_error_flag=1;
    5351        end
    5452        switch CellInfo{icell}.CoordType;
    55             case  'scattered'               
     53            case  'scattered'   
     54                XName=FieldData.ListVarName{CellInfo{icell}.Coord_x};
     55                YName=FieldData.ListVarName{CellInfo{icell}.Coord_y};
     56                DX=(MaskData.AX(2)-MaskData.AX(1))/(Npx-1);
     57                DY=(MaskData.AY(2)-MaskData.AY(1))/(Npy-1);
    5658                mask_ind_i=round(0.5+(FieldData.(XName)-MaskData.AX(1))/DX);%nbpoint terms
    5759                mask_ind_j=round(0.5+(FieldData.(YName)-MaskData.AY(1))/DY);%nbpoint terms
     
    6567                    ProjData.(VarName)(checkfalse)=0;
    6668                end
    67                 if ~isfield(CellInfo{icell},'VarIndex_errorflag')% an error flag already exists in the current cell
     69                if check_new_error_flag% an error flag needs to be created in the current cell
    6870                    ProjData.(FFName)=zeros(size(ProjData.(VarName)));
     71                    ProjData.VarDimName=[FieldData.VarDimName FieldData.VarDimName(CellInfo{icell}.VarIndex(1))];
    6972                end
    70                 ProjData.(FFName)(checkfalse)=1;
     73                ProjData.(FFName)(checkfalse)=1;% update the existing error flag             
    7174            case  'grid'
     75                XName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(2)};
     76                YName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(1)};
    7277                Var1Name=FieldData.ListVarName{CellInfo{icell}.VarIndex(1)};
    7378                [Npy_field,Npx_field]=size(FieldData.(Var1Name));
    74                 DX_field=(FieldData.(XName)(end)-FieldData.(XName)(1))/(Npx_field-1);
    75                 DY_field=(FieldData.(YName)(end)-FieldData.(YName)(1))/(Npy_field-1);
    76                 XArray=FieldData.(XName)(1):DX_field:FieldData.(XName)(end);
    77                 YArray=FieldData.(YName)(1):DY_field:FieldData.(YName)(end);
    78                 XMask=MaskData.AX(1):DX:MaskData.AX(end);
    79                 YMask=MaskData.AY(end):-DY:MaskData.AY(1);
     79                XArray=linspace(FieldData.(XName)(1),FieldData.(XName)(end),Npx_field);
     80                YArray=linspace(FieldData.(YName)(1),FieldData.(YName)(end),Npy_field);
     81                XMask=linspace(MaskData.AX(1),MaskData.AX(end),Npx);
     82                YMask=linspace(MaskData.AY(1),MaskData.AY(end),Npy);
    8083                [XMask,YMask]=meshgrid(XMask,YMask);
    8184                Mask = interp2(XMask,YMask,MaskData.A,XArray,YArray','nearest');
     
    8790                    end
    8891                end
    89                 if isfield(CellInfo{icell},'VarIndex_errorflag')% an error flag already exists in the current cell
     92                if check_new_error_flag% an error flag needs to be created in the current cell
     93                    ProjData.(FFName)= ~Mask;
     94                    ProjData.VarDimName=[FieldData.VarDimName FieldData.VarDimName(CellInfo{icell}.VarIndex(1))];
     95                else
    9096                    ProjData.(FFName)=FieldData.(FFName) | ~Mask;
    91                 else
    92                     ProjData.(FFName)= ~Mask;
    9397                end
    9498        end
Note: See TracChangeset for help on using the changeset viewer.