Changeset 268
- Timestamp:
- 05/06/09 15:02:51 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/solutions/dakota/qmu.m
r32 r268 1 function md=qmu(md,package )1 function md=qmu(md,package,varargin) 2 2 %INPUT function md=qmu(md,package) 3 3 %Deal with coupled ISSM or Cielo/ Dakota runs, to do sensitivity analyses. … … 5 5 global ISSM_DIR; 6 6 7 % qmudir =['qmu_' datestr(now,'yyyymmdd_HHMMSS')]; 8 qmudir ='qmu'; 9 % qmufile can not be changed unless cielo_ice_script.sh is 10 qmufile='qmu'; 11 ivar =1; 12 iresp =1; 13 imethod=1; 14 iparams=1; 15 16 % process any extra input arguments 17 18 for 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 33 end 34 7 35 %first create temporary directory in which we will work 8 % qmudir=['qmu_' datestr(now,'yyyymmdd_HHMMSS')];9 qmudir='qmu';10 36 if exist(qmudir,'dir') 11 37 overwrite=input(['Overwrite existing ''' qmudir ''' directory? Y/N [N]: '], 's'); … … 21 47 22 48 %save our model in qmu so that it can be repeatedly used by Dakota. 23 save Qmu.model md49 save('Qmu.model','md') 24 50 25 51 %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'];52 if ~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']; 29 55 end 30 56 31 if (numel(md.qmu_method) > 1) 32 imeth=input('Which method? '); 33 else 34 imeth=1; 57 dakota_in_data(md.qmu_method(imethod),md.variables(ivar),md.responses(iresp),md.qmu_params(iparams),qmufile,package,md); 58 rundak=input(['Run Dakota analysis ''' qmufile '''? Y/N [N]: '], 's'); 59 if ~strncmpi(rundak,'y',1) 60 cd .. 61 return 35 62 end 36 dakota_in_data(md.qmu_method(imeth),md.variables,md.responses,md.qmu_params,'qmu',package,md);37 cd ..38 return39 63 40 64 %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');65 system(['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']); 43 67 44 68 %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']); 46 70 md.dakotaresults.method =method; 47 71 md.dakotaresults.dvar =dvar; 48 72 md.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']); 50 75 md.dakotaresults.dresp_out=dresp_out; 51 [method,dresp_dat ]=dakota_out_parse('dakota_tabular.dat');52 md.dakotaresults.dresp_dat=dresp_dat;53 76 md.dakotaresults.scm =scm; 54 77 md.dakotaresults.pcm =pcm; … … 56 79 md.dakotaresults.prcm =prcm; 57 80 81 if exist('dakota_tabular.dat','file') 82 [method,dresp_dat ]=dakota_out_parse('dakota_tabular.dat'); 83 md.dakotaresults.dresp_dat=dresp_dat; 84 end 85 58 86 %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 87 md.dakotain =readfile([qmufile '.in']); 88 md.dakotaout=readfile([qmufile '.out']); 89 if exist('dakota_tabular.dat','file') 90 md.dakotadat=readfile('dakota_tabular.dat'); 91 end 92 93 system('zip -mq params.in.zip params.in.[1-9]*'); 94 system('zip -mq results.out.zip results.out.[1-9]*'); 95 system('zip -mq matlab.out.zip matlab*.out.[1-9]*'); 96 63 97 %get out of local directory and erase 64 98 cd ../
Note:
See TracChangeset
for help on using the changeset viewer.