Changeset 1194 for trunk/src/get_field.m


Ignore:
Timestamp:
Feb 23, 2026, 3:58:54 PM (8 days ago)
Author:
sommeria
Message:

several bugs repaired

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/get_field.m

    r1162 r1194  
    428428        pos(2)=pos_coord(2)-pos(4)-2;
    429429        set(handles.PanelScalar,'Position',pos)
     430        set(handles.Coord_x,'Visible','on')
    430431        set(handles.Coord_y,'Visible','on')
    431432        set(handles.Y_title,'Visible','on')     
     
    507508%------------------------------------------------------------------------
    508509Field=get(handles.get_field,'UserData');
    509 VarIndex=find(strcmp(VarName,Field.Display.ListVarName),1);
    510 DimCell=Field.Display.VarDimName{VarIndex};
     510VarIndex=find(strcmp(VarName,Field.Display.ListVarName),1);% find the index of the input coord variable
     511DimCell=Field.Display.VarDimName{VarIndex};% dimension(s) of the input coord variable
    511512
    512513
    513514%% set list of possible coordinates
    514 
    515 test_coord=zeros(size(Field.Display.VarDimName)); %=1 when variable #ilist is eligible as structured coordiante
    516 
    517 for ilist=1:numel(Field.Display.VarDimName)
    518     %dimnames=Field.Display.VarDimName{ilist}; %list of dimensions for variable #ilist
    519     % if isequal(dimnames,DimCell)||isequal(dimnames(1:end-1),DimCell)||isequal(dimnames(2:end),DimCell)
    520     % if numel(dimnames)==1 ||
    521     %     test_coord(ilist)=1;
    522     % end
    523 end
    524 ListCoord=Field.Display.ListVarName;%(find(test_coord));
     515if isequal(get(handles.FieldOption,'Value'),1)% case of 1D plot
     516    test_coord=false(size(Field.Display.VarDimName)); %=true when variable #ilist is eligible as ordinate
     517    for ilist=1:numel(Field.Display.VarDimName)
     518        dimnames=Field.Display.VarDimName{ilist}; %list of dimensions for variable #ilist
     519        if isequal(dimnames,DimCell)&& ~strcmp(Field.Display.ListVarName{ilist},VarName) %exclude the the same variable as coord_y
     520            test_coord(ilist)=true;
     521        elseif numel(dimnames)==2 && (isequal(dimnames(1),DimCell)||isequal(dimnames(2),DimCell))
     522            test_coord(ilist)=true;
     523        end
     524    end
     525    ListCoord=Field.Display.ListVarName(test_coord);
     526else
     527    ListCoord=Field.Display.ListVarName;
     528end
    525529set(handles.Coord_y,'String',ListCoord)
    526530val_y=1;
     
    605609
    606610%% set list of possible coordinates
    607 test_component=zeros(size(Field.Display.VarDimName));%=1 when variable #ilist is eligible as unstructured coordinate
    608 test_coord=zeros(size(Field.Display.VarDimName)); %=1 when variable #ilist is eligible as structured coordiante
     611test_component=false(size(Field.Display.VarDimName));%=1 when variable #ilist is eligible as unstructured coordinate
     612test_coord=false(size(Field.Display.VarDimName)); %=1 when variable #ilist is eligible as structured coordiante
    609613dim_var=Field.Display.VarDimName{scalar_index};%list of dimensions of the selected variable
    610 %if ~get(handles.CheckDimensionX,'Value')
     614
    611615%look for coordinate variables among the other variables
    612616for ilist=1:numel(Field.Display.VarDimName)
    613617    dimnames=Field.Display.VarDimName{ilist}; %list of dimensions for variable #ilist
    614618    if isequal(dimnames,dim_var)
    615         test_component(ilist)=1;% the listed variable has the same dimension as the selected scalar-> possibly chosen as unstructured coordinate
     619        test_component(ilist)=true;% the listed variable has the same dimension as the selected scalar-> possibly chosen as unstructured coordinate
    616620    elseif numel(dimnames)==1 && ~isempty(find(strcmp(dimnames{1},dim_var), 1))%variable ilist is a 1D array which can be coordinate variable
    617         test_coord(ilist)=1;
    618     end
    619 end
    620 %end
     621        test_coord(ilist)=true;
     622%         if strcmp(dimnames{1},Field.Display.ListVarName{ilist})% case of diemnsion with same name as the variable
     623%             test_select(ilist)=true
     624    end
     625end
     626
    621627var_component=find(test_component);% list of variable indices elligible as unstructured coordinates
    622628var_coord=find(test_coord);% % list of variable indices elligible as gridded coordinates
    623 index_coord=[];
    624 index_component=[];
    625 for iscalar=1:numel(scalar_index)
    626     index_component=[index_component find(var_component==scalar_index(iscalar),1)];
    627     index_coord=[index_coord find(var_coord==scalar_index(iscalar),1)];
    628 end
    629 var_component(index_component)=[];
    630 var_coord(index_coord)=[];
     629% index_coord=[];
     630% index_component=[];
     631% for iscalar=1:numel(scalar_index)
     632%     index_component=[index_component find(var_component==scalar_index(iscalar),1)];
     633%     index_coord=[index_coord find(var_coord==scalar_index(iscalar),1)];
     634% end
     635% var_component(index_component)=[];
     636% var_coord(index_coord)=[];
    631637ListCoord=Field.Display.ListVarName([var_coord var_component]);
    632 coord_val=zeros(size(ListCoord));
     638%coord_val=zeros(size(ListCoord));
    633639
    634640%% set default selection for grid coordinates
    635 if numel(var_coord)>=2
    636     coord_val(1)=var_coord(end);
    637     coord_val(2)=var_coord(end-1);
    638     if numel(var_coord)>=3
    639         coord_val(3)=var_coord(end-2);
    640     end
    641 end
     641% if numel(var_coord)>=2
     642%     coord_val(1)=var_coord(end);
     643%     coord_val(2)=var_coord(end-1);
     644%     if numel(var_coord)>=3
     645%         coord_val(3)=var_coord(end-2);
     646%     end
     647% end
    642648% if numel(find(test_coord))>3
    643649%     SwitchVarIndexTime=get(handles.SwitchVarIndexTime,'String');
     
    649655%     SwitchVarIndexTime_Callback([], [], handles)
    650656% end
     657coord_val=[];
    651658
    652659%% default selection for labelled unstructured coordinates
     
    664671    end
    665672end
    666 if numel(find(coord_val))<2 % no predefiend components
    667     if numel(var_coord)>=3
    668         coord_val(3)=3;
    669     end
    670     coord_val([1 2])=[1 2];
     673% if numel(find(coord_val))<2 % no predefined components
     674%     if numel(var_coord)>=3
     675%         coord_val(3)=3;
     676%     end
     677%     coord_val([1 2])=[1 2];
     678% end
     679%% structured coordinates
     680if isempty(coord_val)% structured coordinates
     681    if numel(dim_var)>=3
     682        ind_select3=find(strcmp(dim_var{3},ListCoord), 1);
     683        if ~isempty(ind_select3)
     684            coord_val(3)=ind_select3;
     685        end
     686    end
     687    ind_select1=find(strcmp(dim_var{2},ListCoord));
     688    if ~isempty(ind_select1)
     689        coord_val(1)=ind_select1;
     690    end
     691    ind_select2=find(strcmp(dim_var{1},ListCoord));
     692    if ~isempty(ind_select2)
     693        coord_val(2)=ind_select2;
     694    end
    671695end
    672696
     
    676700set(handles.Coord_y,'Value',coord_val(2))
    677701set(handles.Coord_y,'String',ListCoord)
    678 if numel(find(coord_val))>=3
     702if numel(dim_var)>=3
    679703    set(handles.Coord_z,'Value',coord_val(3))
    680704    set(handles.Coord_z,'String',ListCoord)
     
    882906string=get(handles.Coord_x,'String');
    883907VarName=string{index};
    884 if ~ischar(DimCell)
    885     update_field(handles,VarName)
     908if ~ischar(DimCell)% no dimension as input
     909    update_field(handles,VarName)% update the display of the variable 'VarName' and its dimensions in the general list of variables
    886910end
    887911if isequal(get(handles.FieldOption,'Value'),1)
    888 set_coord_y_options(handles,VarName)
     912    set_coord_y_options(handles,VarName)
    889913end
    890914
     
    899923
    900924if ~ischar(DimCell)
    901 update_field(handles,VarName)
     925    update_field(handles,VarName)
    902926end
    903927
     
    911935VarName=string{index};
    912936if ~ischar(DimCell)
    913 update_field(handles,VarName)
     937    update_field(handles,VarName)
    914938end
    915939
     
    10031027end
    10041028
    1005 
    1006 
    1007 % % --- Executes on button press in CheckDimensionY.
    1008 % function CheckDimensionY_Callback(hObject, eventdata, handles)
    1009 % FieldList=get(handles.FieldOption,'String');
    1010 % FieldOption=FieldList{get(handles.FieldOption,'Value')};
    1011 % switch FieldOption
    1012 %     case '1D plot'
    1013 %         
    1014 %     case {'scalar','pick variables'}
    1015 %        scalar_Callback(hObject, eventdata, handles)
    1016 %     case 'vectors'
    1017 % end
    1018 %
    1019 %
    1020 % % --- Executes on button press in CheckDimensionZ.
    1021 % function CheckDimensionZ_Callback(hObject, eventdata, handles)
    1022 % FieldList=get(handles.FieldOption,'String');
    1023 % FieldOption=FieldList{get(handles.FieldOption,'Value')};
    1024 % switch FieldOption
    1025 %     case '1D plot'
    1026 %         
    1027 %     case 'scalar'
    1028 %        scalar_Callback(hObject, eventdata, handles)
    1029 %     case 'vectors'
    1030 % end
    1031 
     1029%------------------------------------------------------------------------
    10321030% --- Executes on selection change in TimeName.
     1031%------------------------------------------------------------------------
    10331032function TimeName_Callback(hObject, eventdata, handles)
    10341033
Note: See TracChangeset for help on using the changeset viewer.