Changeset 268


Ignore:
Timestamp:
05/06/09 15:02:51 (16 years ago)
Author:
jschierm
Message:

Add varargin for multiple variable/response/method/param sets and qmu directory and file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solutions/dakota/qmu.m

    r32 r268  
    1 function md=qmu(md,package)
     1function md=qmu(md,package,varargin)
    22%INPUT function md=qmu(md,package)
    33%Deal with coupled ISSM or Cielo/ Dakota runs, to do sensitivity analyses.
     
    55global ISSM_DIR;
    66
     7% qmudir =['qmu_' datestr(now,'yyyymmdd_HHMMSS')];
     8qmudir ='qmu';
     9%  qmufile can not be changed unless cielo_ice_script.sh is
     10qmufile='qmu';
     11ivar   =1;
     12iresp  =1;
     13imethod=1;
     14iparams=1;
     15
     16%  process any extra input arguments
     17
     18for i=1:2:nargin-2
     19    switch varargin{i}
     20        case 'qmudir'
     21            qmudir =varargin{i+1};
     22        case 'qmufile'
     23            qmufile=varargin{i+1};
     24        case 'ivar'
     25            ivar   =varargin{i+1};
     26        case 'iresp'
     27            iresp  =varargin{i+1};
     28        case 'imethod'
     29            imethod=varargin{i+1};
     30        case 'iparams'
     31            iparams=varargin{i+1};
     32    end
     33end
     34
    735%first create temporary directory in which we will work
    8 % qmudir=['qmu_' datestr(now,'yyyymmdd_HHMMSS')];
    9 qmudir='qmu';
    1036if exist(qmudir,'dir')
    1137    overwrite=input(['Overwrite existing ''' qmudir ''' directory? Y/N [N]: '], 's');
     
    2147
    2248%save our model in qmu so that it can be repeatedly used by Dakota.
    23 save Qmu.model md
     49save('Qmu.model','md')
    2450
    2551%create m and in files for dakota
    26 if ~isfield(md.qmu_params,'analysis_driver') || ...
    27     isempty(md.qmu_params.analysis_driver)
    28     md.qmu_params.analysis_driver=[ISSM_DIR '/src/m/solutions/dakota/cielo_ice_script.sh'];
     52if ~isfield(md.qmu_params(iparams),'analysis_driver') || ...
     53    isempty(md.qmu_params(iparams).analysis_driver)
     54    md.qmu_params(iparams).analysis_driver=[ISSM_DIR '/src/m/solutions/dakota/cielo_ice_script.sh'];
    2955end
    3056
    31 if (numel(md.qmu_method) > 1)
    32     imeth=input('Which method? ');
    33 else
    34     imeth=1;
     57dakota_in_data(md.qmu_method(imethod),md.variables(ivar),md.responses(iresp),md.qmu_params(iparams),qmufile,package,md);
     58rundak=input(['Run Dakota analysis ''' qmufile '''? Y/N [N]: '], 's');
     59if ~strncmpi(rundak,'y',1)
     60    cd ..
     61    return
    3562end
    36 dakota_in_data(md.qmu_method(imeth),md.variables,md.responses,md.qmu_params,'qmu',package,md);
    37 cd ..
    38 return
    3963
    4064%call dakota
    41 system('dakota -i qmu.in -o qmu.out -e qmu.err');
    42 % system('export MPIRUN_NPROCS=8;mpirun -np 4 dakota -i qmu.in -o qmu.out -e qmu.err');
     65system(['dakota -i ' qmufile '.in -o ' qmufile '.out -e ' qmufile '.err']);
     66% system(['export MPIRUN_NPROCS=8;mpirun -np 4 dakota -i ' qmufile '.in -o ' qmufile '.out -e ' qmufile '.err']);
    4367
    4468%parse inputs and results from dakota
    45 [method,dvar,dresp_in]=dakota_in_parse('qmu.in');
     69[method,dvar,dresp_in]=dakota_in_parse([qmufile '.in']);
    4670md.dakotaresults.method   =method;
    4771md.dakotaresults.dvar     =dvar;
    4872md.dakotaresults.dresp_in =dresp_in;
    49 [method,dresp_out,scm,pcm,srcm,prcm]=dakota_out_parse('qmu.out');
     73
     74[method,dresp_out,scm,pcm,srcm,prcm]=dakota_out_parse([qmufile '.out']);
    5075md.dakotaresults.dresp_out=dresp_out;
    51 [method,dresp_dat                  ]=dakota_out_parse('dakota_tabular.dat');
    52 md.dakotaresults.dresp_dat=dresp_dat;
    5376md.dakotaresults.scm      =scm;
    5477md.dakotaresults.pcm      =pcm;
     
    5679md.dakotaresults.prcm     =prcm;
    5780
     81if exist('dakota_tabular.dat','file')
     82    [method,dresp_dat                  ]=dakota_out_parse('dakota_tabular.dat');
     83    md.dakotaresults.dresp_dat=dresp_dat;
     84end
     85
    5886%save input and output files into model
    59 md.dakotain =readfile('qmu.in');
    60 md.dakotaout=readfile('qmu.out');
    61 md.dakotadat=readfile('dakota_tabular.dat');
    62        
     87md.dakotain =readfile([qmufile '.in']);
     88md.dakotaout=readfile([qmufile '.out']);
     89if exist('dakota_tabular.dat','file')
     90        md.dakotadat=readfile('dakota_tabular.dat');
     91end
     92
     93system('zip -mq params.in.zip params.in.[1-9]*');
     94system('zip -mq results.out.zip results.out.[1-9]*');
     95system('zip -mq matlab.out.zip matlab*.out.[1-9]*');
     96
    6397%get out of local directory and erase
    6498cd ../
Note: See TracChangeset for help on using the changeset viewer.