Changeset 501 for trunk


Ignore:
Timestamp:
Jul 25, 2012, 1:41:52 AM (12 years ago)
Author:
sommeria
Message:

various improvements: read input parameters for civ. Order of panels rationalised.
rationalisation in find_field_indices
simplification of default PARAM.xml, suppress unneeded information.

Location:
trunk/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/PARAM.xml.default

    r500 r501  
    22<UvmatParam>
    33<RunParam>
    4 <MaxCivProcesses>20</MaxCivProcesses>
    54<RunTime>${MCRROOT712}</RunTime>
    65<CivBin>bin/civ<!--binary for the new civx version (relative or
     
    109<Civ2Bin>bin/civ2<!--binary for civ2 (relative or absolute path)
    1110--></Civ2Bin>
    12 <CivmBin>civ_matlab.sh<!--binary from compilation of civ_matlab.
    13 m (relative or absolute path)--></CivmBin>
    1411<Civ3D3CBin>bin/civ3d3c</Civ3D3CBin>
    1512<FixBin>bin/fix_flag</FixBin>
    1613<PatchBin>bin/patch_up</PatchBin>
    17 <PatchNewBin></PatchNewBin>
    1814</RunParam>
    1915<BatchParam>
     
    2319<Civ1Bin>bin/civ1</Civ1Bin>
    2420<Civ2Bin>bin/civ2</Civ2Bin>
    25 <CivmBin>civ_matlab.sh<!--binary from compilation of civ_matlab.
    26 m (relative or absolute path)--></CivmBin>
    2721<Civ3D3CBin>bin/civ3d3c</Civ3D3CBin>
    2822<FixBin>bin/fix_flag</FixBin>
    2923<PatchBin>bin/patch_up</PatchBin>
    30 <PatchNewBin></PatchNewBin>
    3124</BatchParam>
    3225<SchemaPath>XML_SCHEMAS <!--directory of xml schemas(relative or absolut
  • trunk/src/calc_field.m

    r491 r501  
    117117            end
    118118        end
    119         coord_x=XMin:DataIn.Mesh:XMax;
     119        coord_x=XMin:DataIn.Mesh:XMax;% increase the recommanded mesh to  visualisation
    120120        coord_y=YMin:DataIn.Mesh:YMax;
    121121%         npx=length(coord_x);
  • trunk/src/civ.m

    r500 r501  
    337337ind_opening=0;%default
    338338if strcmp(ExtInput,'.xml')
    339     Param=xml2struct(fileinput);
     339    %reinitialise menus
     340        set(handles.ListPairMode,'Value',1)
     341    set(handles.ListPairMode,'String',{''})
     342    set(handles.ListPairCiv1,'Value',1)
     343    set(handles.ListPairCiv1,'String',{''})
     344        set(handles.ListPairCiv2,'Value',1)
     345    set(handles.ListPairCiv2,'String',{''})
     346    Param=xml2struct(fileinput);  %read parameters from the xml input file
    340347    fill_GUI(Param,handles);%fill the GUI with the parameters retrieved from the xml file
    341348    return
     
    611618%% set the civ options depending on the input file content when a nc file has been opened
    612619ListOptions={'CheckCiv1', 'CheckFix1' 'CheckPatch1', 'CheckCiv2', 'CheckFix2', 'CheckPatch2'};
    613 if ind_opening~=0
    614     for index = 1:ind_opening
     620if ind_opening==0
     621    for index=1:numel(ListOptions)
     622        checkbox(index)=get(handles.(ListOptions{index}),'Value');
     623    end
     624    for index=1:max(1,max(find(checkbox)))
     625        set(handles.(ListOptions{index}),'Value',1)% select all operations starting from CIV1
     626    end
     627else
     628    for index = 1:min(ind_opening,5)
    615629        set(handles.(ListOptions{index}),'value',0)
    616630    end
    617 end
    618 for index = ind_opening+2:6
    619     set(handles.(ListOptions{index}),'value',0)
    620 end
    621 set(handles.(ListOptions{min(ind_opening+1,6)}),'value',1)
     631    set(handles.(ListOptions{min(ind_opening+1,6)}),'value',1)
     632    for index = ind_opening+2:6
     633        set(handles.(ListOptions{index}),'value',0)
     634    end
     635end
     636%list_operation={'CheckCiv1','CheckFix1','CheckPatch1','CheckCiv2','CheckFix2','CheckPatch2'};
     637
     638%set(handles.(ListOptions{min(ind_opening+1,6)}),'value',1)
    622639update_CivOptions(handles,ind_opening)
    623640
     
    10931110    Param.xml.FixBin=fullfile('bin','fix_flag');
    10941111    Param.xml.PatchBin=fullfile('bin','patch_up');
    1095     Param.xml.CivmBin=fullfile('bin','civ_matlab');
    10961112end
    10971113if strcmp(Param.RunMode,'cluster') %computation dispatched on a cluster
     
    11111127        Param.xml.FixBin=fullfile('bin','fix_flag');
    11121128        Param.xml.PatchBin=fullfile('bin','patch_up');
    1113         Param.xml.CivmBin=fullfile('bin','civ_matlab');
     1129   %     Param.xml.CivmBin=fullfile('bin','civ_matlab');
    11141130        Param.xml.BatchMode='oar';% TODO : allow choice for sge
    11151131    end
     
    11221138        Param.xml.FixBin=fullfile('bin','fix_flag');
    11231139        Param.xml.PatchBin=fullfile('bin','patch_up');
    1124         Param.xml.CivmBin=fullfile('bin','civ_matlab');
    1125     end
    1126 end
     1140    end
     1141end
     1142%Param.xml.CivmBin=fullfile('bin','civ_matlab');
    11271143
    11281144%% check if the binaries exist : to move in civ_opening
     
    11331149    case 'CivAll'% desactivated option
    11341150        binary_list={'Civ'};
    1135     case 'civ_matlab.sh'% compiled version of civ_matlab
    1136         binary_list={'CivmBin'};         
     1151%     case 'civ_matlab.sh'% compiled version of civ_matlab
     1152%         binary_list={'CivmBin'};         
    11371153end
    11381154for bin_name=binary_list %loop on the list of binaries
     
    11531169                cd(currentdir);
    11541170            else
    1155                 errormsg=['path ' path ' for binaries defined in PARAM.xml does not exist'];
     1171                errormsg=['path ' path ' for binaries specified in PARAM.xml does not exist'];
     1172                return
    11561173            end         
    11571174        else  %look for the full path if the file name has been defined with a relative path in PARAM.xm
     
    11601177                Param.xml.(bin_name{1})=fullname;
    11611178            else
    1162                 errormsg=['Binary ' Param.xml.(bin_name{1}) ' defined in PARAM.xml does not exist'];
    1163             end
    1164         end
    1165     end
    1166 end
    1167 if ~isempty(errormsg)
    1168     if strcmp(Param.Program,'civ_matlab.sh')
    1169         errormsg=[{errormsg}; {'run compile_functions.m to create it by compiling civ_matlab.m'}];
     1179                errormsg=['Binary ' Param.xml.(bin_name{1}) ' specified in PARAM.xml does not exist'];
     1180                return
     1181            end
     1182        end
     1183    end
     1184end
     1185if strcmp(Param.Program,'civ_matlab.sh')
     1186    if ~exist(fullfile(path_civ,'civ_matlab.sh'),'file')
     1187        errormsg=[{'no file civ_matlab.sh found'}; {'run compile_functions.m to create it by compiling civ_matlab.m'}];
    11701188    end
    11711189    return
     
    11881206%% create subfolders for log, cmx, nml, xml, bat
    11891207RootBat=fileparts(filecell.nc.civ1{1,1});
    1190 dir_list={'0_BAT','0_CMX','0_XML','0_LOG'};
     1208switch(Param.Program)
     1209    case {'CivX','CivAll'}
     1210dir_list={'0_BAT','0_CMX','0_LOG'};
     1211    case {'civ_matlab','civ_matlab.sh'}
     1212        dir_list={'0_BAT','0_XML'};
     1213end
    11911214for k=1:length(dir_list)
    11921215    if ~exist(fullfile(RootBat,dir_list{k}),'dir')
  • trunk/src/find_field_indices.m

    r494 r501  
    117117
    118118%% role of variables
    119 Role=mat2cell(blanks(nbvar),1,ones(1,nbvar));%initialize a cell array of nbvar blanks
     119Role=num2cell(blanks(nbvar));%initialize a cell array of nbvar blanks
    120120Role=regexprep(Role,' ','scalar'); % Role set to 'scalar' by default
    121121if isfield(Data,'VarAttribute')
     
    129129%% loop on the list of variables, group them by common dimensions
    130130for ivar=1:nbvar
     131    if ischar(Data.VarDimName{ivar})
     132        Data.VarDimName{ivar}=Data.VarDimName(ivar);%transform char chain into cell
     133    end
    131134    DimCell=Data.VarDimName{ivar}; %dimensions associated with the variable #ivar
    132     if ischar(DimCell)
    133         DimCell={DimCell};
    134         Data.VarDimName{ivar}={Data.VarDimName{ivar}};%transform char chain into cell
    135     end
    136135    testnewcell=1;
    137136    for icell_prev=1:numel(CellVarIndex)%detect whether the dimensions of ivar fit with an existing cell
    138137        PrevVarIndex=CellVarIndex{icell_prev};%list of variable indices in cell # icell_prev
    139         PrevDimName=Data.VarDimName{PrevVarIndex(1)};%list of corresponding variable names
    140         if isequal(PrevDimName,DimCell)
     138        PrevDimCell=Data.VarDimName{PrevVarIndex(1)};%list of corresponding variable names
     139        if isequal(PrevDimCell,DimCell)
    141140            CellVarIndex{icell_prev}=[CellVarIndex{icell_prev} ivar];% add variable index #ivar to the cell #icell_prev
    142141            testnewcell=0; %existing cell detected
     
    146145    if testnewcell
    147146        icell=icell+1;
    148         CellVarIndex{icell}=ivar;%put the current variabl index in the new cell
     147        CellVarIndex{icell}=ivar;%put the current variable index in the new cell
     148        NbDim(icell)=numel(DimCell);%default
    149149    end
    150150   
    151151    %look for dimension variables
    152     if numel(DimCell)==1% if the variable has a single dimension
    153         if strcmp(DimCell{1},Data.ListVarName{ivar}) || strcmp(Role{ivar},'dimvar')
    154             ivardim=ivardim+1;
    155             VarDimIndex(ivardim)=ivar;%index of the variable
    156             VarDimName{ivardim}=DimCell{1};%name of the dimension
    157         end
    158     end
     152%     if numel(DimCell)==1% if the variable has a single dimension
     153%         if strcmp(DimCell{1},Data.ListVarName{ivar}) %|| strcmp(Role{ivar},'dimvar')
     154%             ivardim=ivardim+1;
     155%             VarDimIndex(ivardim)=ivar;%index of the variable
     156%             VarDimName{ivardim}=DimCell{1};%name of the dimension
     157%         end
     158%     end
     159end
     160
     161%% find dimension variables
     162checksinglecell=cellfun(@numel,CellVarIndex)==1 & NbDim==1;% find isolated cells with a single dimension
     163ind_dim_var_cell=find(checksinglecell);
     164%CoordType(ind_dim_var_cell)='dim_var';% to be used in output
     165for icoord=1:numel(ind_dim_var_cell)
     166VarDimIndex(icoord)=CellVarIndex{ind_dim_var_cell(icoord)};
     167VarDimName{icoord}=Data.VarDimName{VarDimIndex(icoord)}{1};
    159168end
    160169
     
    162171ListRole={'coord_x','coord_y','coord_z','vector_x','vector_y','vector_z','vector_x_tps','vector_y_tps','warnflag','errorflag',...
    163172    'ancillary','image','color','discrete','scalar','coord_tps'};% rmq vector_x_tps and vector_y_tps to be replaced by vector_x and vector_y
    164 NbDim=zeros(size(CellVarIndex));%default
     173% NbDim=zeros(size(CellVarIndex));%default
    165174
    166175for ilist=1:numel(ListRole)
     
    171180    VarType.subrange_tps=[];
    172181    VarType.nbsites_tps=[];
     182    select=zeros(1,numel(VarType.coord_tps));
    173183    for ifield=1:numel(VarType.coord_tps)
    174         select(ifield)=0;
    175184        DimCell=Data.VarDimName{VarType.coord_tps(ifield)};
    176185        if numel(DimCell)==3
     
    194203CellVarType=cell(1,length(CellVarIndex));
    195204for icell=1:length(CellVarIndex)
     205    if checksinglecell(icell)
     206        continue
     207    end
    196208    VarIndex=CellVarIndex{icell};%set of variable indices with the same dim
    197209    check_remove=0;
     
    212224            return
    213225        end
     226        % case of x cordinate marked as a dimension variable (var name=dimension name)
     227        if isempty(CellVarType{icell}.coord_x)
     228            var_dim_index=find(strcmp(DimCell{1},Data.ListVarName(VarIndex)));
     229            if ~isempty(var_dim_index)
     230                CellVarType{icell}.coord_x=VarIndex(var_dim_index);
     231            end
     232        end         
    214233        if numel(CellVarType{icell}.errorflag)>1
    215234            errormsg='multiply defined error flag in the same cell';
     
    239258        if  ~test_coord && ~isempty(VarDimName)
    240259            for idim=1:numel(DimCell)   %loop on the dimensions of the variables in cell #icell
    241                 for ivardim=1:numel(VarDimName)
    242                     if strcmp(VarDimName{ivardim},DimCell{idim})
    243                         coord(idim)=VarDimIndex(ivardim);
    244                         break
    245                     end
     260                ind_coord=find(strcmp(DimCell{idim},VarDimName));
     261                if ~isempty(ind_coord)
     262                    coord(idim)=VarDimIndex(ind_coord);
    246263                end
     264%                 for ivardim=1:numel(VarDimName)
     265%                     if strcmp(VarDimName{ivardim},DimCell{idim})
     266%                         coord(idim)=VarDimIndex(ivardim);
     267%                         break
     268%                     end
     269%                 end
    247270            end
    248271            NbDim(icell)=numel(find(coord));
  • trunk/src/plot_field.m

    r477 r501  
    132132    end
    133133end
    134 index_1D=find(NbDim==1);
     134index_1D=find(NbDim==1&~cellfun(@isempty,VarType));
    135135index_0D=find(NbDim==0);
    136136%remove coordinates variables from 1D plot
    137 if ~isempty(index_2D)
    138     for ivar=1:length(index_1D)
    139         if isequal(CellVarIndex{index_1D(ivar)},VarType{index_1D(ivar)}.coord)
    140             index_1D(ivar)=0;
    141         end
    142     end
    143     index_1D=index_1D(index_1D>0);
    144 end
     137% if ~isempty(index_2D)
     138%     for ivar=1:length(index_1D)
     139%         if isequal(CellVarIndex{index_1D(ivar)},VarType{index_1D(ivar)}.coord)
     140%             index_1D(ivar)=0;
     141%         end
     142%     end
     143%     index_1D=index_1D(index_1D>0);
     144% end
    145145
    146146%% test axes and figure
     
    346346%loop on input  fields
    347347for icell=1:length(CellVarIndex)
     348    if isempty(VarType{icell})% coordiante variable
     349        continue
     350    end
    348351    VarIndex=CellVarIndex{icell};%  indices of the selected variables in the list data.ListVarName
    349352    if ~isempty(VarType{icell}.coord_x)
  • trunk/src/uvmat.m

    r499 r501  
    23792379end
    23802380if (check_tps ||check_proj_tps)&&~isfield(Field{1},'Coord_tps')
    2381     SubDomain=1500; %default, estimated nbre of vectors in a subdomain used for tps
     2381    SubDomain=1000; %default, estimated nbre of vectors in a subdomain used for tps
    23822382    if isfield(Field{1},'SubDomain')
    23832383        SubDomain=Field{1}.SubDomain;%
Note: See TracChangeset for help on using the changeset viewer.