Index: /issm/trunk/src/m/utils/Qmu/README
===================================================================
--- /issm/trunk/src/m/utils/Qmu/README	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/README	(revision 834)
@@ -0,0 +1,4 @@
+Example parameter files to setup QMU (quantification of margins 
+and uncertainties) using Dakota.
+
+
Index: /issm/trunk/src/m/utils/Qmu/lrel.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/lrel.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/lrel.m	(revision 834)
@@ -0,0 +1,55 @@
+%  set up a local reliability study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.nuv=normal_uncertain.empty();
+md.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.rf =response_function.empty();
+md.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_local_reliability study
+
+md.qmu_method     =dakota_method('nond_l');
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=1;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+md.qmu_params.interval_type='forward';
+md.qmu_params.fd_gradient_step_size=0.01;
+
+md.npart=10;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/lsq.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/lsq.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/lsq.m	(revision 834)
@@ -0,0 +1,50 @@
+%  set up a least-squares study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.cdv=continuous_design.empty();
+md.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.variables.csv=continuous_state.empty();
+md.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.lst=least_squares_term.empty();
+md.responses.lst(end+1)=least_squares_term('max_vx');
+md.responses.lst(end+1)=least_squares_term('max_vy');
+
+%%  a least-squares study
+
+md.qmu_method     =dakota_method('nl2sol');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.01);
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=4;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+md.qmu_params.interval_type='forward';
+md.qmu_params.fd_gradient_step_size=0.01;
+
+md.npart=10;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/opt.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/opt.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/opt.m	(revision 834)
@@ -0,0 +1,49 @@
+%  set up an optimization study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.cdv=continuous_design.empty();
+md.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.variables.csv=continuous_state.empty();
+md.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.of =objective_function.empty();
+md.responses.of (end+1)=objective_function('max_vel');
+
+%%  an optimization study
+
+md.qmu_method     =dakota_method('conmin_f');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.01);
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=4;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+md.qmu_params.interval_type='forward';
+md.qmu_params.fd_gradient_step_size=0.01;
+
+md.npart=10;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/paramc.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/paramc.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/paramc.m	(revision 834)
@@ -0,0 +1,53 @@
+%  set up a centered parameter study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.nuv=normal_uncertain.empty();
+md.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.variables.cdv=continuous_design.empty();
+md.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.variables.csv=continuous_state.empty();
+md.variables.csv(end+1)=continuous_state('gravity',9.8);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.rf =response_function.empty();
+md.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vel'   ,[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  a parameter study
+
+md.qmu_method     =dakota_method('centered');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'percent_delta',10.,...
+    'deltas_per_variable',1);
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=4;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+
+md.npart=10;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/paramm.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/paramm.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/paramm.m	(revision 834)
@@ -0,0 +1,45 @@
+%  set up a multidim parameter study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.nuv=normal_uncertain.empty();
+md.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85,900,1000);
+md.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15,1000,1100);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.rf =response_function.empty();
+md.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vel'   ,[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  a parameter study
+
+md.qmu_method     =dakota_method('multidim');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'partitions',[4 4]);
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=4;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+
+md.npart=10;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/qmu.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/qmu.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/qmu.m	(revision 834)
@@ -0,0 +1,91 @@
+%  set up some qmu studies, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.nuv=normal_uncertain.empty();
+md.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+md.variables.cdv=continuous_design.empty();
+md.variables.cdv(end+1)=continuous_design('thickness',1,0.9,1.1);
+md.variables.cdv(end+1)=continuous_design('drag',1,0.5,1.5);
+md.variables.csv=continuous_state.empty();
+md.variables.csv(end+1)=continuous_state('gravity',9.8);
+md.variables.lic=linear_inequality_constraint.empty();
+md.variables.lic(end+1)=linear_inequality_constraint([1 2 3],4,5);
+md.variables.lic(end+1)=linear_inequality_constraint([1 2],4,5);
+md.variables.lic(end+1)=linear_inequality_constraint([1 2 3 4],4,5);
+md.variables.lec=linear_equality_constraint.empty();
+md.variables.lec(end+1)=linear_equality_constraint([1 2 3],4);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.rf =response_function.empty();
+md.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vy',[100 200 300],[]);
+md.responses.rf (end+1)=response_function('max_vel'   ,[100 200 300],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.of =objective_function.empty();
+md.responses.of (end+1)=objective_function('max_vel');
+md.responses.lst=least_squares_term.empty();
+md.responses.lst(end+1)=least_squares_term('max_vel');
+md.responses.nic=nonlinear_inequality_constraint.empty();
+md.responses.nic(end+1)=nonlinear_inequality_constraint('max_abs_vx',0,1000);
+md.responses.nic(end+1)=nonlinear_inequality_constraint('max_abs_vy',0,1000);
+md.responses.nec=nonlinear_equality_constraint.empty();
+md.responses.nec(end+1)=nonlinear_equality_constraint('max_abs_vx',500);
+md.responses.nec(end+1)=nonlinear_equality_constraint('max_abs_vy',500);
+
+%%  a variety of studies
+
+%  a sampling study
+
+md.qmu_method       =dakota_method('nond_samp');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'seed',1234,...
+    'samples',10);
+
+%  a local reliability study
+
+md.qmu_method(end+1)=dakota_method('nond_l');
+
+%  a multidimensional parameter study
+
+md.qmu_method(end+1)=dakota_method('multi');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'partitions',2);
+
+%  an optimization study
+
+md.qmu_method(end+1)=dakota_method('conmin_f');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'max_iterations',10,...
+    'max_function_evaluations',50,...
+    'convergence_tolerance',0.001);
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=4;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+md.qmu_params.interval_type='forward';
+md.qmu_params.fd_gradient_step_size=0.001;
+
+md.npart=10;
+md.numrifts=5;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/samp.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/samp.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/samp.m	(revision 834)
@@ -0,0 +1,57 @@
+%  set up a sampling study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.nuv=normal_uncertain.empty();
+md.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.rf =response_function.empty();
+md.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_sampling study
+
+md.qmu_method     =dakota_method('nond_samp');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'seed',1234,...
+    'samples',20,...
+    'sample_type','lhs');
+
+%%  a variety of parameters
+
+md.qmu_params.evaluation_concurrency=4;
+md.qmu_params.analysis_driver='';
+md.qmu_params.analysis_components='';
+
+md.npart=10;
+
+md.qmu
Index: /issm/trunk/src/m/utils/Qmu/samp_direct.m
===================================================================
--- /issm/trunk/src/m/utils/Qmu/samp_direct.m	(revision 834)
+++ /issm/trunk/src/m/utils/Qmu/samp_direct.m	(revision 834)
@@ -0,0 +1,57 @@
+%  set up a sampling study, like might be done in Pig.par
+
+%%  a variety of variables
+
+%  seems to be a Matlab bug here (on Linux, not WinXP) -- unless
+%  the class has been called, "empty" method can not be found
+normal_uncertain;
+continuous_design;
+continuous_state;
+linear_inequality_constraint;
+linear_equality_constraint;
+response_function;
+objective_function;
+least_squares_term;
+nonlinear_inequality_constraint;
+nonlinear_equality_constraint;
+
+md.variables=struct();
+md.variables.nuv=normal_uncertain.empty();
+md.variables.nuv(end+1)=normal_uncertain('rho_ice',917,45.85);
+md.variables.nuv(end+1)=normal_uncertain('rho_water',1023,51.15);
+md.variables.nuv(end+1)=normal_uncertain('heatcapacity',2009,100.45);
+md.variables.nuv(end+1)=normal_uncertain('thermalconductivity',2.2,0.11);
+md.variables.nuv(end+1)=normal_uncertain('gravity',9.8,0.49);
+md.variables.nuv(end+1)=normal_uncertain('thickness',1,0.05);
+md.variables.nuv(end+1)=normal_uncertain('drag',1,0.05);
+
+%%  a variety of responses
+
+md.responses=struct();
+md.responses.rf =response_function.empty();
+md.responses.rf (end+1)=response_function('min_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vx',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('min_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_abs_vy',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('min_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+md.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
+
+%%  nond_sampling study
+
+md.qmu_method     =dakota_method('nond_samp');
+md.qmu_method(end)=dmeth_params_set(md.qmu_method(end),...
+    'seed',1234,...
+    'samples',20,...
+    'sample_type','lhs');
+
+%%  a variety of parameters
+
+md.qmu_params.direct=true;
+md.qmu_params.analysis_driver='diagnostic';
+md.qmu_params.evaluation_concurrency=1;
+
+md.npart=10;
+
+md.qmu
