Index: /issm/trunk/src/m/classes/@continuous_design/continuous_design.m
===================================================================
--- /issm/trunk/src/m/classes/@continuous_design/continuous_design.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@continuous_design/continuous_design.m	(revision 3094)
@@ -21,5 +21,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -87,13 +87,40 @@
 
         end
-        function [desc]  =prop_desc(cdv)
-            desc=cell(size(cdv));
+
+        function []=disp(cdv)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(cdv)
-                desc(i)=cellstr(cdv(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(cdv),inputname(1),string_dim(cdv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,cdv(i).descriptor));
+                disp(sprintf('        initpt: %g'      ,cdv(i).initpt));
+                disp(sprintf('         lower: %g'      ,cdv(i).lower));
+                disp(sprintf('         upper: %g'      ,cdv(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,cdv(i).scale_type));
+                disp(sprintf('         scale: %g'      ,cdv(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(cdv,dstr)
+            desc=cell(1,numel(cdv));
+            for i=1:numel(cdv)
+                if ~isempty(cdv(i).descriptor)
+                    desc(i)=cellstr(cdv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(cdv,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(cdv,i)]);
+                else
+                    desc(i)=cellstr(['cdv'        string_dim(cdv,i)]);
+                end
             end
             desc=allempty(desc);
         end
         function [initpt]=prop_initpt(cdv)
-            initpt=zeros(size(cdv));
+            initpt=zeros(1,numel(cdv));
             for i=1:numel(cdv)
                 initpt(i)=cdv(i).initpt;
@@ -102,5 +129,5 @@
         end
         function [lower] =prop_lower(cdv)
-            lower=zeros(size(cdv));
+            lower=zeros(1,numel(cdv));
             for i=1:numel(cdv)
                 lower(i)=cdv(i).lower;
@@ -109,5 +136,5 @@
         end
         function [upper] =prop_upper(cdv)
-            upper=zeros(size(cdv));
+            upper=zeros(1,numel(cdv));
             for i=1:numel(cdv)
                 upper(i)=cdv(i).upper;
@@ -125,5 +152,5 @@
         end
         function [stype] =prop_stype(cdv)
-            stype=cell(size(cdv));
+            stype=cell(1,numel(cdv));
             for i=1:numel(cdv)
                 stype(i)=cellstr(cdv(i).scale_type);
@@ -132,5 +159,5 @@
         end
         function [scale] =prop_scale(cdv)
-            scale=zeros(size(cdv));
+            scale=zeros(1,numel(cdv));
             for i=1:numel(cdv)
                 scale(i)=cdv(i).scale;
@@ -139,3 +166,16 @@
         end
     end
+    
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            cdv=struc_class(dvar,'continuous_design');
+
+%  write variables
+
+            vlist_write(fidi,'continuous_design','cdv',cdv);
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@continuous_design/display.m
===================================================================
--- /issm/trunk/src/m/classes/@continuous_design/display.m	(revision 3093)
+++ 	(revision )
@@ -1,40 +1,0 @@
-%
-%  display for the continuous_design class.
-%
-%  []=display(cdv)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(cdv)
-
-if ~isa(cdv,'continuous_design')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(cdv),'continuous_design');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(cdv)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(cdv),inputname(1),string_dim(cdv,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,cdv(i).descriptor));
-    disp(sprintf('        initpt: %g'      ,cdv(i).initpt));
-    disp(sprintf('         lower: %g'      ,cdv(i).lower));
-    disp(sprintf('         upper: %g'      ,cdv(i).upper));
-    disp(sprintf('    scale_type: ''%s'''  ,cdv(i).scale_type));
-    disp(sprintf('         scale: %g'      ,cdv(i).scale));
-end
-
-end
Index: /issm/trunk/src/m/classes/@continuous_state/continuous_state.m
===================================================================
--- /issm/trunk/src/m/classes/@continuous_state/continuous_state.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@continuous_state/continuous_state.m	(revision 3094)
@@ -19,5 +19,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -77,8 +77,33 @@
 
         end
-        function [desc]  =prop_desc(csv)
-            desc=cell(size(csv));
+
+        function []=disp(csv)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(csv)
-                desc(i)=cellstr(csv(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(csv),inputname(1),string_dim(csv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,csv(i).descriptor));
+                disp(sprintf('        initst: %g'      ,csv(i).initst));
+                disp(sprintf('         lower: %g'      ,csv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,csv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(csv,dstr)
+            desc=cell(1,numel(csv));
+            for i=1:numel(csv)
+                if ~isempty(csv(i).descriptor)
+                    desc(i)=cellstr(csv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(csv,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(csv,i)]);
+                else
+                    desc(i)=cellstr(['csv'        string_dim(csv,i)]);
+                end
             end
             desc=allempty(desc);
@@ -88,5 +113,5 @@
         end
         function [lower] =prop_lower(csv)
-            lower=zeros(size(csv));
+            lower=zeros(1,numel(csv));
             for i=1:numel(csv)
                 lower(i)=csv(i).lower;
@@ -95,5 +120,5 @@
         end
         function [upper] =prop_upper(csv)
-            upper=zeros(size(csv));
+            upper=zeros(1,numel(csv));
             for i=1:numel(csv)
                 upper(i)=csv(i).upper;
@@ -108,5 +133,5 @@
         end
         function [initst]=prop_initst(csv)
-            initst=zeros(size(csv));
+            initst=zeros(1,numel(csv));
             for i=1:numel(csv)
                 initst(i)=csv(i).initst;
@@ -121,3 +146,16 @@
         end
     end
+    
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            csv=struc_class(dvar,'continuous_state');
+
+%  write variables
+
+            vlist_write(fidi,'continuous_state','csv',csv);
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@continuous_state/display.m
===================================================================
--- /issm/trunk/src/m/classes/@continuous_state/display.m	(revision 3093)
+++ 	(revision )
@@ -1,39 +1,0 @@
-%
-%  display for the continuous_state class.
-%
-%  []=display(csv)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(csv)
-
-if ~isa(csv,'continuous_state')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(csv),'continuous_state');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(csv)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(csv),inputname(1),string_dim(csv,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,csv(i).descriptor));
-    disp(sprintf('        initst: %g'      ,csv(i).initst));
-    disp(sprintf('         lower: %g'      ,csv(i).lower));
-    disp(sprintf('         upper: %g\n'    ,csv(i).upper));
-end
-
-end
-
Index: /issm/trunk/src/m/classes/@dakota_method/dakota_method.m
===================================================================
--- /issm/trunk/src/m/classes/@dakota_method/dakota_method.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@dakota_method/dakota_method.m	(revision 3094)
@@ -28,5 +28,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -38,5 +38,5 @@
 %
 classdef dakota_method
-    properties
+    properties (SetAccess=private)
         method   ='';
         type     ='';
@@ -45,4 +45,6 @@
         responses={};
         ghspec   ={};
+    end
+    properties
         params   =struct();
     end
@@ -132,7 +134,8 @@
                                   'dot_frcg'}
                                 dm.type     ='dot';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -148,7 +151,11 @@
                                   'dot_sqp'}
                                 dm.type     ='dot';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -163,7 +170,11 @@
                             case {'npsol_sqp'}
                                 dm.type     ='npsol';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -180,7 +191,8 @@
                             case {'conmin_frcg'}
                                 dm.type     ='conmin';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -193,7 +205,11 @@
                             case {'conmin_mfd'}
                                 dm.type     ='conmin';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -207,7 +223,8 @@
                             case {'optpp_cg'}
                                 dm.type     ='optpp';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -223,7 +240,11 @@
                                   'optpp_newton'}
                                 dm.type     ='optpp';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -245,7 +266,8 @@
                             case {'optpp_pds'}
                                 dm.type     ='optpp';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -259,7 +281,11 @@
                             case {'asynch_pattern_search'}
                                 dm.type     ='apps';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_function_evaluations=false;
@@ -278,7 +304,10 @@
                             case {'coliny_cobyla'}
                                 dm.type     ='coliny';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -294,7 +323,10 @@
                             case {'coliny_direct'}
                                 dm.type     ='coliny';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -314,7 +346,10 @@
                             case {'coliny_ea'}
                                 dm.type     ='coliny';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -345,7 +380,10 @@
                             case {'coliny_pattern_search'}
                                 dm.type     ='coliny';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -372,7 +410,10 @@
                             case {'coliny_solis_wets'}
                                 dm.type     ='coliny';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -396,7 +437,11 @@
                             case {'ncsu_direct'}
                                 dm.type     ='ncsu';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};  %  ?
-                                dm.responses={'of','nic','nec'};  %  ?
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};  %  ?
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};  %  ?
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -412,7 +457,11 @@
                             case {'moga'}
                                 dm.type     ='jega';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -452,7 +501,11 @@
                             case {'soga'}
                                 dm.type     ='jega';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'of','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'objective_function',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -489,7 +542,8 @@
                             case {'nl2sol'}
                                 dm.type     ='lsq';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'lst'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'least_squares_term'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -509,7 +563,11 @@
                             case {'nlssol_sqp'}
                                 dm.type     ='lsq';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'lst','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'least_squares_term',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -525,7 +583,11 @@
                             case {'optpp_g_newton'}
                                 dm.type     ='lsq';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={'lic','lec'};
-                                dm.responses={'lst','nic','nec'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={'linear_inequality_constraint',...
+                                              'linear_equality_constraint'};
+                                dm.responses={'least_squares_term',...
+                                              'nonlinear_inequality_constraint',...
+                                              'nonlinear_equality_constraint'};
                                 dm.ghspec   ={'grad'};
                                 dm.params.max_iterations=false;
@@ -548,7 +610,9 @@
                             case {'nond_sampling'}
                                 dm.type     ='nond';
-                                dm.variables={'nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
                                 dm.ghspec   ={};
 %                               not documented, but apparently works
@@ -563,7 +627,9 @@
                             case {'nond_local_reliability'}
                                 dm.type     ='nond';
-                                dm.variables={'nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
                                 dm.ghspec   ={'grad'};
 %                               not documented, but may work
@@ -580,7 +646,9 @@
                             case {'nond_global_reliability'}
                                 dm.type     ='nond';
-                                dm.variables={'nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
                                 dm.ghspec   ={'grad'};
 %                               not documented, but may work
@@ -592,7 +660,9 @@
                             case {'nond_polynomial_chaos'}
                                 dm.type     ='nond';
-                                dm.variables={'nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
                                 dm.ghspec   ={'grad'};
 %                               not documented, but may work
@@ -615,7 +685,9 @@
                             case {'nond_stoch_collocation'}
                                 dm.type     ='nond';
-                                dm.variables={'nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
                                 dm.ghspec   ={'grad'};
 %                               not documented, but may work
@@ -630,7 +702,9 @@
                             case {'nond_evidence'}
                                 dm.type     ='nond';
-                                dm.variables={'nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'response_function'};
                                 dm.ghspec   ={'grad'};
 %                               not documented, but may work
@@ -641,7 +715,9 @@
                             case {'dace'}
                                 dm.type     ='dace';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.grid=false;
@@ -660,7 +736,9 @@
                             case {'fsu_quasi_mc'}
                                 dm.type     ='dace';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.halton=false;
@@ -676,7 +754,9 @@
                             case {'fsu_cvt'}
                                 dm.type     ='dace';
-                                dm.variables={'cdv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.seed=false;
@@ -691,7 +771,11 @@
                             case {'vector_parameter_study'}
                                 dm.type     ='param';
-                                dm.variables={'cdv','nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.output=false;
@@ -703,7 +787,11 @@
                             case {'list_parameter_study'}
                                 dm.type     ='param';
-                                dm.variables={'cdv','nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.output=false;
@@ -711,7 +799,11 @@
                             case {'centered_parameter_study'}
                                 dm.type     ='param';
-                                dm.variables={'cdv','nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.output=false;
@@ -720,7 +812,11 @@
                             case {'multidim_parameter_study'}
                                 dm.type     ='param';
-                                dm.variables={'cdv','nuv','csv'};
-                                dm.lcspec   ={};
-                                dm.responses={'rf'};
+                                dm.variables={'continuous_design',...
+                                              'normal_uncertain',...
+                                              'uniform_uncertain',...
+                                              'continuous_state'};
+                                dm.lcspec   ={};
+                                dm.responses={'objective_function',...
+                                              'response_function'};
                                 dm.ghspec   ={};
                                 dm.params.output=false;
@@ -742,4 +838,35 @@
 
         end
+
+        function []=disp(dm)
+
+%  display the object
+
+            for i=1:numel(dm)
+                disp(sprintf('\nclass ''%s'' object ''%s%s'' = \n',...
+                    class(dm),inputname(1),string_dim(dm,i)));
+                disp(sprintf('       method: ''%s'''  ,dm(i).method));
+                disp(sprintf('         type: ''%s'''  ,dm(i).type));
+                disp(sprintf('    variables: %s'      ,string_cell(dm(i).variables)));
+                disp(sprintf('       lcspec: %s'      ,string_cell(dm(i).lcspec)));
+                disp(sprintf('    responses: %s'      ,string_cell(dm(i).responses)));
+                disp(sprintf('       ghspec: %s\n'    ,string_cell(dm(i).ghspec)));
+    
+%  display the parameters within the object
+
+                fnames=fieldnames(dm(i).params);
+                maxlen=0;
+                for j=1:numel(fnames)
+                    maxlen=max(maxlen,length(fnames{j}));
+                end
+    
+                for j=1:numel(fnames)
+                    disp(sprintf(['       params.%-' num2str(maxlen+1) 's: %s'],...
+                        fnames{j},any2str(dm(i).params.(fnames{j}))));
+                end
+            end
+
+        end
     end
 end
+
Index: sm/trunk/src/m/classes/@dakota_method/display.m
===================================================================
--- /issm/trunk/src/m/classes/@dakota_method/display.m	(revision 3093)
+++ 	(revision )
@@ -1,52 +1,0 @@
-%
-%  display for the dakota_method class.
-%
-%  []=display(dm)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(dm)
-
-if ~isa(dm,'dakota_method')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(dm),'dakota_method');
-end
-
-%  display the object
-
-for i=1:numel(dm)
-    disp(sprintf('\nclass ''%s'' object ''%s%s'' = \n',...
-        class(dm),inputname(1),string_dim(dm,i)));
-    disp(sprintf('       method: ''%s'''  ,dm(i).method));
-    disp(sprintf('         type: ''%s'''  ,dm(i).type));
-    disp(sprintf('    variables: %s'      ,string_cell(dm(i).variables)));
-    disp(sprintf('       lcspec: %s'      ,string_cell(dm(i).lcspec)));
-    disp(sprintf('    responses: %s'      ,string_cell(dm(i).responses)));
-    disp(sprintf('       ghspec: %s\n'    ,string_cell(dm(i).ghspec)));
-    
-%  display the parameters within the object
-
-    fnames=fieldnames(dm(i).params);
-    maxlen=0;
-    for j=1:numel(fnames)
-        maxlen=max(maxlen,length(fnames{j}));
-    end
-    
-    for j=1:numel(fnames)
-        disp(sprintf(['       params.%-' num2str(maxlen+1) 's: %s'],...
-            fnames{j},any2str(dm(i).params.(fnames{j}))));
-    end
-end
-
-end
Index: sm/trunk/src/m/classes/@least_squares_term/display.m
===================================================================
--- /issm/trunk/src/m/classes/@least_squares_term/display.m	(revision 3093)
+++ 	(revision )
@@ -1,38 +1,0 @@
-%
-%  display for the least_squares_term class.
-%
-%  []=display(lst)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(lst)
-
-if ~isa(lst,'least_squares_term')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(lst),'least_squares_term');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(lst)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(lst),inputname(1),string_dim(lst,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,lst(i).descriptor));
-    disp(sprintf('    scale_type: ''%s'''  ,lst(i).scale_type));
-    disp(sprintf('         scale: %g'      ,lst(i).scale));
-    disp(sprintf('        weight: %g\n'    ,lst(i).weight));
-end
-
-end
Index: /issm/trunk/src/m/classes/@least_squares_term/least_squares_term.m
===================================================================
--- /issm/trunk/src/m/classes/@least_squares_term/least_squares_term.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@least_squares_term/least_squares_term.m	(revision 3094)
@@ -19,5 +19,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -61,5 +61,5 @@
 
                                     if (nargin > 4)
-                                        warning('objective_function:extra_arg',...
+                                        warning('least_squares_term:extra_arg',...
                                             'Extra arguments for object of class ''%s''.',...
                                             class(lst));
@@ -72,13 +72,38 @@
 
         end
-        function [desc]  =prop_desc(lst)
-            desc=cell(size(lst));
+
+        function []=disp(lst)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(lst)
-                desc(i)=cellstr(lst(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lst),inputname(1),string_dim(lst,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,lst(i).descriptor));
+                disp(sprintf('    scale_type: ''%s'''  ,lst(i).scale_type));
+                disp(sprintf('         scale: %g'      ,lst(i).scale));
+                disp(sprintf('        weight: %g\n'    ,lst(i).weight));
+            end
+
+        end
+
+        function [desc]  =prop_desc(lst,dstr)
+            desc=cell(1,numel(lst));
+            for i=1:numel(lst)
+                if ~isempty(lst(i).descriptor)
+                    desc(i)=cellstr(lst(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(lst,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(lst,i)]);
+                else
+                    desc(i)=cellstr(['lst'        string_dim(lst,i)]);
+                end
             end
             desc=allempty(desc);
         end
         function [stype] =prop_stype(lst)
-            stype=cell(size(lst));
+            stype=cell(1,numel(lst));
             for i=1:numel(lst)
                 stype(i)=cellstr(lst(i).scale_type);
@@ -87,5 +112,5 @@
         end
         function [scale] =prop_scale(lst)
-            scale=zeros(size(lst));
+            scale=zeros(1,numel(lst));
             for i=1:numel(lst)
                 scale(i)=lst(i).scale;
@@ -94,5 +119,5 @@
         end
         function [weight]=prop_weight(lst)
-            weight=zeros(size(lst));
+            weight=zeros(1,numel(lst));
             for i=1:numel(lst)
                 weight(i)=lst(i).weight;
@@ -110,3 +135,19 @@
         end
     end
+    
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            lst=struc_class(dresp,'least_squares_term');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'least_squares_terms','least_squares_term',lst,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@linear_equality_constraint/display.m
===================================================================
--- /issm/trunk/src/m/classes/@linear_equality_constraint/display.m	(revision 3093)
+++ 	(revision )
@@ -1,39 +1,0 @@
-%
-%  display for the linear_equality_constraint class.
-%
-%  []=display(lec)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(lec)
-
-if ~isa(lec,'linear_equality_constraint')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(lec),'linear_equality_constraint');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(lec)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(lec),inputname(1),string_dim(lec,i)));
-    disp(sprintf('        matrix: %s'      ,string_vec(lec(i).matrix)));
-    disp(sprintf('        target: %g'      ,lec(i).target));
-    disp(sprintf('    scale_type: ''%s'''  ,lec(i).scale_type));
-    disp(sprintf('         scale: %g\n'    ,lec(i).scale));
-end
-
-end
-
Index: /issm/trunk/src/m/classes/@linear_equality_constraint/linear_equality_constraint.m
===================================================================
--- /issm/trunk/src/m/classes/@linear_equality_constraint/linear_equality_constraint.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@linear_equality_constraint/linear_equality_constraint.m	(revision 3094)
@@ -19,5 +19,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -83,4 +83,20 @@
         end
 
+        function []=disp(lec)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lec)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lec),inputname(1),string_dim(lec,i)));
+                disp(sprintf('        matrix: %s'      ,string_vec(lec(i).matrix)));
+                disp(sprintf('        target: %g'      ,lec(i).target));
+                disp(sprintf('    scale_type: ''%s'''  ,lec(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,lec(i).scale));
+            end
+
+        end
+
         function [matrix]=prop_matrix(lec)
             matrix=zeros(numel(lec),0);
@@ -117,3 +133,16 @@
         end
     end
+    
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            lec=struc_class(dvar,'linear_equality_constraint');
+
+%  write constraints
+
+            lclist_write(fidi,'linear_equality_constraints','linear_equality',lec);
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@linear_inequality_constraint/display.m
===================================================================
--- /issm/trunk/src/m/classes/@linear_inequality_constraint/display.m	(revision 3093)
+++ 	(revision )
@@ -1,40 +1,0 @@
-%
-%  display for the linear_inequality_constraint class.
-%
-%  []=display(lic)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(lic)
-
-if ~isa(lic,'linear_inequality_constraint')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(lic),'linear_inequality_constraint');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(lic)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(lic),inputname(1),string_dim(lic,i)));
-    disp(sprintf('        matrix: %s'      ,string_vec(lic(i).matrix)));
-    disp(sprintf('         lower: %g'      ,lic(i).lower));
-    disp(sprintf('         upper: %g'      ,lic(i).upper));
-    disp(sprintf('    scale_type: ''%s'''  ,lic(i).scale_type));
-    disp(sprintf('         scale: %g\n'    ,lic(i).scale));
-end
-
-end
-
Index: /issm/trunk/src/m/classes/@linear_inequality_constraint/linear_inequality_constraint.m
===================================================================
--- /issm/trunk/src/m/classes/@linear_inequality_constraint/linear_inequality_constraint.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@linear_inequality_constraint/linear_inequality_constraint.m	(revision 3094)
@@ -20,5 +20,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -94,4 +94,21 @@
         end
 
+        function []=disp(lic)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(lic)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(lic),inputname(1),string_dim(lic,i)));
+                disp(sprintf('        matrix: %s'      ,string_vec(lic(i).matrix)));
+                disp(sprintf('         lower: %g'      ,lic(i).lower));
+                disp(sprintf('         upper: %g'      ,lic(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,lic(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,lic(i).scale));
+            end
+
+        end
+
         function [matrix]=prop_matrix(lic)
             matrix=zeros(numel(lic),0);
@@ -132,4 +149,17 @@
         end
     end
+    
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            lic=struc_class(dvar,'linear_inequality_constraint');
+
+%  write constraints
+
+            lclist_write(fidi,'linear_inequality_constraints','linear_inequality',lic);
+        end
+    end
 end
 
Index: sm/trunk/src/m/classes/@nonlinear_equality_constraint/display.m
===================================================================
--- /issm/trunk/src/m/classes/@nonlinear_equality_constraint/display.m	(revision 3093)
+++ 	(revision )
@@ -1,38 +1,0 @@
-%
-%  display for the nonlinear_equality_constraint class.
-%
-%  []=display(nec)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(nec)
-
-if ~isa(nec,'nonlinear_equality_constraint')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(nec),'nonlinear_equality_constraint');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(nec)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(nec),inputname(1),string_dim(nec,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,nec(i).descriptor));
-    disp(sprintf('        target: %g'      ,nec(i).target));
-    disp(sprintf('    scale_type: ''%s'''  ,nec(i).scale_type));
-    disp(sprintf('         scale: %g\n'    ,nec(i).scale));
-end
-
-end
Index: /issm/trunk/src/m/classes/@nonlinear_equality_constraint/nonlinear_equality_constraint.m
===================================================================
--- /issm/trunk/src/m/classes/@nonlinear_equality_constraint/nonlinear_equality_constraint.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@nonlinear_equality_constraint/nonlinear_equality_constraint.m	(revision 3094)
@@ -19,5 +19,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -76,8 +76,33 @@
 
         end
-        function [desc]  =prop_desc(nec)
-            desc=cell(size(nec));
+
+        function []=disp(nec)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(nec)
-                desc(i)=cellstr(nec(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nec),inputname(1),string_dim(nec,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nec(i).descriptor));
+                disp(sprintf('        target: %g'      ,nec(i).target));
+                disp(sprintf('    scale_type: ''%s'''  ,nec(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,nec(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nec,dstr)
+            desc=cell(1,numel(nec));
+            for i=1:numel(nec)
+                if ~isempty(nec(i).descriptor)
+                    desc(i)=cellstr(nec(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nec,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nec,i)]);
+                else
+                    desc(i)=cellstr(['nec'        string_dim(nec,i)]);
+                end
             end
             desc=allempty(desc);
@@ -114,3 +139,19 @@
         end
     end
+    
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            nec=struc_class(dresp,'nonlinear_equality_constraint');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'nonlinear_equality_constraints','nonlinear_equality',nec,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@nonlinear_inequality_constraint/display.m
===================================================================
--- /issm/trunk/src/m/classes/@nonlinear_inequality_constraint/display.m	(revision 3093)
+++ 	(revision )
@@ -1,39 +1,0 @@
-%
-%  display for the nonlinear_inequality_constraint class.
-%
-%  []=display(nic)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(nic)
-
-if ~isa(nic,'nonlinear_inequality_constraint')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(nic),'nonlinear_inequality_constraint');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(nic)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(nic),inputname(1),string_dim(nic,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,nic(i).descriptor));
-    disp(sprintf('         lower: %g'      ,nic(i).lower));
-    disp(sprintf('         upper: %g'      ,nic(i).upper));
-    disp(sprintf('    scale_type: ''%s'''  ,nic(i).scale_type));
-    disp(sprintf('         scale: %g\n'    ,nic(i).scale));
-end
-
-end
Index: /issm/trunk/src/m/classes/@nonlinear_inequality_constraint/nonlinear_inequality_constraint.m
===================================================================
--- /issm/trunk/src/m/classes/@nonlinear_inequality_constraint/nonlinear_inequality_constraint.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@nonlinear_inequality_constraint/nonlinear_inequality_constraint.m	(revision 3094)
@@ -20,5 +20,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -85,8 +85,34 @@
 
         end
-        function [desc]  =prop_desc(nic)
-            desc=cell(size(nic));
+
+        function []=disp(nic)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(nic)
-                desc(i)=cellstr(nic(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nic),inputname(1),string_dim(nic,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nic(i).descriptor));
+                disp(sprintf('         lower: %g'      ,nic(i).lower));
+                disp(sprintf('         upper: %g'      ,nic(i).upper));
+                disp(sprintf('    scale_type: ''%s'''  ,nic(i).scale_type));
+                disp(sprintf('         scale: %g\n'    ,nic(i).scale));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nic,dstr)
+            desc=cell(1,numel(nic));
+            for i=1:numel(nic)
+                if ~isempty(nic(i).descriptor)
+                    desc(i)=cellstr(nic(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nic,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nic,i)]);
+                else
+                    desc(i)=cellstr(['nic'        string_dim(nic,i)]);
+                end
             end
             desc=allempty(desc);
@@ -127,3 +153,19 @@
         end
     end
+    
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            nic=struc_class(dresp,'nonlinear_inequality_constraint');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'nonlinear_inequality_constraints','nonlinear_inequality',nic,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@normal_uncertain/display.m
===================================================================
--- /issm/trunk/src/m/classes/@normal_uncertain/display.m	(revision 3093)
+++ 	(revision )
@@ -1,39 +1,0 @@
-%
-%  display for the normal_uncertain class.
-%
-%  []=display(nuv)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(nuv)
-
-if ~isa(nuv,'normal_uncertain')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(nuv),'normal_uncertain');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(nuv)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(nuv),inputname(1),string_dim(nuv,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,nuv(i).descriptor));
-    disp(sprintf('          mean: %g'      ,nuv(i).mean));
-    disp(sprintf('        stddev: %g'      ,nuv(i).stddev));
-    disp(sprintf('         lower: %g'      ,nuv(i).lower));
-    disp(sprintf('         upper: %g\n'    ,nuv(i).upper));
-end
-
-end
Index: /issm/trunk/src/m/classes/@normal_uncertain/normal_uncertain.m
===================================================================
--- /issm/trunk/src/m/classes/@normal_uncertain/normal_uncertain.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@normal_uncertain/normal_uncertain.m	(revision 3094)
@@ -20,5 +20,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -84,8 +84,34 @@
 
         end
-        function [desc]  =prop_desc(nuv)
-            desc=cell(size(nuv));
+
+        function []=disp(nuv)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(nuv)
-                desc(i)=cellstr(nuv(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(nuv),inputname(1),string_dim(nuv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,nuv(i).descriptor));
+                disp(sprintf('          mean: %g'      ,nuv(i).mean));
+                disp(sprintf('        stddev: %g'      ,nuv(i).stddev));
+                disp(sprintf('         lower: %g'      ,nuv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,nuv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(nuv,dstr)
+            desc=cell(1,numel(nuv));
+            for i=1:numel(nuv)
+                if ~isempty(nuv(i).descriptor)
+                    desc(i)=cellstr(nuv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(nuv,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(nuv,i)]);
+                else
+                    desc(i)=cellstr(['nuv'        string_dim(nuv,i)]);
+                end
             end
             desc=allempty(desc);
@@ -95,5 +121,5 @@
         end
         function [lower] =prop_lower(nuv)
-            lower=zeros(size(nuv));
+            lower=zeros(1,numel(nuv));
             for i=1:numel(nuv)
                 lower(i)=nuv(i).lower;
@@ -102,5 +128,5 @@
         end
         function [upper] =prop_upper(nuv)
-            upper=zeros(size(nuv));
+            upper=zeros(1,numel(nuv));
             for i=1:numel(nuv)
                 upper(i)=nuv(i).upper;
@@ -109,5 +135,5 @@
         end
         function [mean]  =prop_mean(nuv)
-            mean=zeros(size(nuv));
+            mean=zeros(1,numel(nuv));
             for i=1:numel(nuv)
                 mean(i)=nuv(i).mean;
@@ -115,5 +141,5 @@
         end
         function [stddev]=prop_stddev(nuv)
-            stddev=zeros(size(nuv));
+            stddev=zeros(1,numel(nuv));
             for i=1:numel(nuv)
                 stddev(i)=nuv(i).stddev;
@@ -130,3 +156,16 @@
         end
     end
+    
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            nuv=struc_class(dvar,'normal_uncertain');
+
+%  write variables
+
+            vlist_write(fidi,'normal_uncertain','nuv',nuv);
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@objective_function/display.m
===================================================================
--- /issm/trunk/src/m/classes/@objective_function/display.m	(revision 3093)
+++ 	(revision )
@@ -1,38 +1,0 @@
-%
-%  display for the objective_function class.
-%
-%  []=display(of)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(of)
-
-if ~isa(of,'objective_function')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(of),'objective_function');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(of)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(of),inputname(1),string_dim(of,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,of(i).descriptor));
-    disp(sprintf('    scale_type: ''%s'''  ,of(i).scale_type));
-    disp(sprintf('         scale: %g'      ,of(i).scale));
-    disp(sprintf('        weight: %g\n'    ,of(i).weight));
-end
-
-end
Index: /issm/trunk/src/m/classes/@objective_function/objective_function.m
===================================================================
--- /issm/trunk/src/m/classes/@objective_function/objective_function.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@objective_function/objective_function.m	(revision 3094)
@@ -19,5 +19,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -72,13 +72,38 @@
 
         end
-        function [desc]  =prop_desc(of)
-            desc=cell(size(of));
+
+        function []=disp(of)
+
+%  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(of)
-                desc(i)=cellstr(of(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(of),inputname(1),string_dim(of,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,of(i).descriptor));
+                disp(sprintf('    scale_type: ''%s'''  ,of(i).scale_type));
+                disp(sprintf('         scale: %g'      ,of(i).scale));
+                disp(sprintf('        weight: %g\n'    ,of(i).weight));
+            end
+
+        end
+
+        function [desc]  =prop_desc(of,dstr)
+            desc=cell(1,numel(of));
+            for i=1:numel(of)
+                if ~isempty(of(i).descriptor)
+                    desc(i)=cellstr(of(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(of,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(of,i)]);
+                else
+                    desc(i)=cellstr(['of'         string_dim(of,i)]);
+                end
             end
             desc=allempty(desc);
         end
         function [stype] =prop_stype(of)
-            stype=cell(size(of));
+            stype=cell(1,numel(of));
             for i=1:numel(of)
                 stype(i)=cellstr(of(i).scale_type);
@@ -87,5 +112,5 @@
         end
         function [scale] =prop_scale(of)
-            scale=zeros(size(of));
+            scale=zeros(1,numel(of));
             for i=1:numel(of)
                 scale(i)=of(i).scale;
@@ -94,5 +119,5 @@
         end
         function [weight]=prop_weight(of)
-            weight=zeros(size(of));
+            weight=zeros(1,numel(of));
             for i=1:numel(of)
                 weight(i)=of(i).weight;
@@ -110,3 +135,19 @@
         end
     end
+    
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            of=struc_class(dresp,'objective_function');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'objective_functions','objective_function',of,rdesc);
+        end
+
+        function []=dakota_rlev_write(fidi,dresp,params)
+        end
+    end
 end
Index: sm/trunk/src/m/classes/@response_function/display.m
===================================================================
--- /issm/trunk/src/m/classes/@response_function/display.m	(revision 3093)
+++ 	(revision )
@@ -1,39 +1,0 @@
-%
-%  display for the response_function class.
-%
-%  []=display(rf)
-%
-%  "Copyright 2009, by the California Institute of Technology.
-%  ALL RIGHTS RESERVED. United States Government Sponsorship
-%  acknowledged. Any commercial use must be negotiated with
-%  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
-%
-%  This software may be subject to U.S. export control laws.
-%  By accepting this  software, the user agrees to comply with
-%  all applicable U.S. export laws and regulations. User has the
-%  responsibility to obtain export licenses, or other export
-%  authority as may be required before exporting such information
-%  to foreign countries or providing access to foreign persons."
-%
-function []=display(rf)
-
-if ~isa(rf,'response_function')
-    error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-        inputname(1),class(rf),'response_function');
-end
-
-%  display the object
-
-disp(sprintf('\n'));
-for i=1:numel(rf)
-    disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
-        class(rf),inputname(1),string_dim(rf,i)));
-    disp(sprintf('    descriptor: ''%s'''  ,rf(i).descriptor));
-    disp(sprintf('         respl: %s'      ,string_vec(rf(i).respl)));
-    disp(sprintf('         probl: %s'      ,string_vec(rf(i).probl)));
-    disp(sprintf('          rell: %s'      ,string_vec(rf(i).rell)));
-    disp(sprintf('         grell: %s\n'    ,string_vec(rf(i).grell)));
-end
-
-end
Index: /issm/trunk/src/m/classes/@response_function/response_function.m
===================================================================
--- /issm/trunk/src/m/classes/@response_function/response_function.m	(revision 3093)
+++ /issm/trunk/src/m/classes/@response_function/response_function.m	(revision 3094)
@@ -20,5 +20,5 @@
 %  acknowledged. Any commercial use must be negotiated with
 %  the Office of Technology Transfer at the California Institute
-%  of Technology.  (NTR 47078)
+%  of Technology.  (J. Schiermeier, NTR 47078)
 %
 %  This software may be subject to U.S. export control laws.
@@ -77,8 +77,34 @@
 
         end
-        function [desc]  =prop_desc(rf)
-            desc=cell(size(rf));
+
+        function []=disp(rf)
+
+        %  display the object
+
+            disp(sprintf('\n'));
             for i=1:numel(rf)
-                desc(i)=cellstr(rf(i).descriptor);
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(rf),inputname(1),string_dim(rf,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,rf(i).descriptor));
+                disp(sprintf('         respl: %s'      ,string_vec(rf(i).respl)));
+                disp(sprintf('         probl: %s'      ,string_vec(rf(i).probl)));
+                disp(sprintf('          rell: %s'      ,string_vec(rf(i).rell)));
+                disp(sprintf('         grell: %s\n'    ,string_vec(rf(i).grell)));
+            end
+
+        end
+
+        function [desc]  =prop_desc(rf,dstr)
+            desc=cell(1,numel(rf));
+            for i=1:numel(rf)
+                if ~isempty(rf(i).descriptor)
+                    desc(i)=cellstr(rf(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(rf,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(rf,i)]);
+                else
+                    desc(i)=cellstr(['rf'         string_dim(rf,i)]);
+                end
             end
             desc=allempty(desc);
@@ -103,8 +129,8 @@
         end
         function [respl,probl,rell,grell]=prop_levels(rf)
-            respl=cell(size(rf));
-            probl=cell(size(rf));
-            rell =cell(size(rf));
-            grell=cell(size(rf));
+            respl=cell(1,numel(rf));
+            probl=cell(1,numel(rf));
+            rell =cell(1,numel(rf));
+            grell=cell(1,numel(rf));
             for i=1:numel(rf)
                 respl(i)={rf(i).respl};
@@ -119,3 +145,27 @@
         end
     end
+    
+    methods (Static)
+        function [rdesc]=dakota_write(fidi,dresp,rdesc)
+
+%  collect only the responses of the appropriate class
+
+            rf=struc_class(dresp,'response_function');
+
+%  write responses
+
+            [rdesc]=rlist_write(fidi,'response_functions','response_function',rf,rdesc);
+        end
+        
+        function []=dakota_rlev_write(fidi,dresp,params)
+
+%  collect only the responses of the appropriate class
+
+            rf=struc_class(dresp,'response_function');
+
+%  write response levels
+
+            rlev_write(fidi,rf,params);
+        end
+    end
 end
Index: /issm/trunk/src/m/classes/lclist_write.m
===================================================================
--- /issm/trunk/src/m/classes/lclist_write.m	(revision 3094)
+++ /issm/trunk/src/m/classes/lclist_write.m	(revision 3094)
@@ -0,0 +1,62 @@
+%
+%  function to write linear constraint list
+%
+function []=lclist_write(fidi,cstring,cstring2,dvar)
+
+if isempty(dvar)
+    return;
+end
+
+%  put linear constraints into lists for writing
+
+nvar=0;
+pmatrix=[];
+plower =[];
+pupper =[];
+ptarget=[];
+pstype =[];
+pscale =[];
+
+fnames=fieldnames(dvar);
+for i=1:numel(fnames)
+    nvar=nvar+numel(dvar.(fnames{i}));
+    pmatrix=[pmatrix prop_matrix(dvar.(fnames{i}))];
+    plower =[plower  prop_lower(dvar.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dvar.(fnames{i})) ];
+    ptarget=[ptarget prop_target(dvar.(fnames{i}))];
+    pstype =[pstype  prop_stype(dvar.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dvar.(fnames{i})) ];
+end
+
+%  write linear constraints
+
+disp(sprintf('  Writing %d %s linear constraints.',...
+    nvar,cstring));
+
+if ~isempty(pmatrix)
+    fprintf(fidi,'\t  %s_matrix =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pmatrix,6,76);
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(ptarget)
+    fprintf(fidi,'\t  %s_targets =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),ptarget,6,76);
+end
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+
+end
+
Index: /issm/trunk/src/m/classes/param_write.m
===================================================================
--- /issm/trunk/src/m/classes/param_write.m	(revision 3094)
+++ /issm/trunk/src/m/classes/param_write.m	(revision 3094)
@@ -0,0 +1,24 @@
+%
+%  function to write a parameter
+%
+function []=param_write(fidi,sbeg,pname,smid,send,params)
+
+if ~isfield(params,pname)
+    warning('param_write:param_not_found',...
+        'Parameter ''%s'' not found in structure.',pname);
+    return
+end
+
+if islogical(params.(pname)) && ~params.(pname)
+    return
+end
+
+if     islogical(params.(pname))
+    fprintf(fidi,[sbeg '%s' send],pname);
+elseif ischar   (params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%s' send],pname,params.(pname));
+elseif isnumeric(params.(pname))
+    fprintf(fidi,[sbeg '%s' smid '%g' send],pname,params.(pname));
+end
+
+end
Index: /issm/trunk/src/m/classes/rlev_write.m
===================================================================
--- /issm/trunk/src/m/classes/rlev_write.m	(revision 3094)
+++ /issm/trunk/src/m/classes/rlev_write.m	(revision 3094)
@@ -0,0 +1,66 @@
+%
+%  function to write response levels
+%
+function []=rlev_write(fidi,dresp,params)
+
+if isempty(dresp)
+    return;
+end
+
+%  put responses into lists for writing
+
+nresp=0;
+respl={};
+probl={};
+rell ={};
+grell={};
+
+fnames=fieldnames(dresp);
+for i=1:numel(fnames)
+    nresp=nresp+numel(dresp.(fnames{i}));
+    [respli,probli,relli,grelli]=prop_levels(dresp.(fnames{i}));
+    respl=[respl respli];
+    probl=[probl probli];
+    rell =[rell  relli ];
+    grell=[grell grelli];
+end
+
+%  write response levels
+
+param_write(fidi,'\t  ','distribution',' ','\n',params);
+if ~isempty(respl)
+    rlevi_write(fidi,'response_levels',respl);
+    param_write(fidi,'\t  ','compute',' ','\n',params);
+end 
+if ~isempty(probl)
+    rlevi_write(fidi,'probability_levels',probl);
+end
+if ~isempty(rell)
+    rlevi_write(fidi,'reliability_levels',rell);
+end
+if ~isempty(grell)
+    rlevi_write(fidi,'gen_reliability_levels',grell);
+end
+
+end
+
+%
+%  function to each type of response level
+%
+function []=rlevi_write(fidi,ltype,levels)
+
+fprintf(fidi,'\t  num_%s =',ltype);
+for i=1:numel(levels)
+    fprintf(fidi,' %d',length(levels{i}));
+end
+fprintf(fidi,'\n');
+
+fprintf(fidi,'\t  %s =\n',ltype);
+
+for i=1:numel(levels)
+    if ~isempty(levels{i})
+        vector_write(fidi,sprintf('\t    '),levels{i},8,76);
+    end
+end
+
+end
Index: /issm/trunk/src/m/classes/rlist_write.m
===================================================================
--- /issm/trunk/src/m/classes/rlist_write.m	(revision 3094)
+++ /issm/trunk/src/m/classes/rlist_write.m	(revision 3094)
@@ -0,0 +1,70 @@
+%
+%  function to write response list
+%
+function [rdesc]=rlist_write(fidi,cstring,cstring2,dresp,rdesc)
+
+if isempty(dresp)
+    return;
+end
+
+%  put responses into lists for writing
+%  (and accumulate descriptors into list for subsequent writing)
+
+nresp=0;
+pstype =[];
+pscale =[];
+pweight=[];
+plower =[];
+pupper =[];
+ptarget=[];
+
+fnames=fieldnames(dresp);
+for i=1:numel(fnames)
+    nresp=nresp+numel(dresp.(fnames{i}));
+    pstype =[pstype  prop_stype(dresp.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dresp.(fnames{i})) ];
+    pweight=[pweight prop_weight(dresp.(fnames{i}))];
+    plower =[plower  prop_lower(dresp.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dresp.(fnames{i})) ];
+    ptarget=[ptarget prop_target(dresp.(fnames{i}))];
+    rdesc  =[rdesc   prop_desc(dresp.(fnames{i}),fnames{i})];
+end
+
+%  write responses
+
+disp(sprintf('  Writing %d %s responses.',nresp,cstring));
+
+fprintf(fidi,'\tnum_%s = %d\n',cstring,nresp);
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+if ~isempty(pweight)
+    switch cstring2
+        case 'objective_function'
+            fprintf(fidi,'\t  %s_weights =\n','multi_objective');
+            vector_write(fidi,sprintf('\t    '),pweight,6,76);
+        case 'least_squares_term'
+            fprintf(fidi,'\t  %s_weights =\n','least_squares');
+            vector_write(fidi,sprintf('\t    '),pweight,6,76);
+    end
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(ptarget)
+    fprintf(fidi,'\t  %s_targets =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),ptarget,6,76);
+end
+
+end
+
Index: /issm/trunk/src/m/classes/uniform_uncertain.m
===================================================================
--- /issm/trunk/src/m/classes/uniform_uncertain.m	(revision 3094)
+++ /issm/trunk/src/m/classes/uniform_uncertain.m	(revision 3094)
@@ -0,0 +1,146 @@
+%
+%  definition for the uniform_uncertain class.
+%
+%  [uuv]=uniform_uncertain(varargin)
+%
+%  where the required varargin are:
+%    descriptor    (char, description, '')
+%    lower         (double, lower bound, -Inf)
+%    upper         (double, upper bound,  Inf)
+%
+%  note that zero arguments constructs a default instance; one
+%  argument of the class copies the instance; and three or more
+%  arguments constructs a new instance from the arguments.
+%
+%  "Copyright 2009, by the California Institute of Technology.
+%  ALL RIGHTS RESERVED. United States Government Sponsorship
+%  acknowledged. Any commercial use must be negotiated with
+%  the Office of Technology Transfer at the California Institute
+%  of Technology.  (J. Schiermeier, NTR 47078)
+%
+%  This software may be subject to U.S. export control laws.
+%  By accepting this  software, the user agrees to comply with
+%  all applicable U.S. export laws and regulations. User has the
+%  responsibility to obtain export licenses, or other export
+%  authority as may be required before exporting such information
+%  to foreign countries or providing access to foreign persons."
+%
+classdef uniform_uncertain
+    properties
+        descriptor='';
+        lower     =-Inf;
+        upper     = Inf;
+    end
+    
+    methods
+        function [uuv]=uniform_uncertain(varargin)
+
+            switch nargin
+
+%  create a default object
+
+                case 0
+
+%  copy the object
+
+                case 1
+                    if isa(varargin{1},'uniform_uncertain')
+                        uuv=varargin{1};
+                    else
+                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
+                            inputname(1),class(varargin{1}),'uniform_uncertain');
+                    end
+
+%  not enough arguments
+
+                case 2
+                    error('Construction of ''%s'' class object requires at least %d inputs.',...
+                        'uniform_uncertain',3)
+
+%  create the object from the input
+
+                otherwise
+                    uuv.descriptor=varargin{1};
+                    uuv.lower     =varargin{2};
+                    uuv.upper     =varargin{3};
+            end
+
+        end
+
+        function []=disp(uuv)
+
+%  display the object
+
+            disp(sprintf('\n'));
+            for i=1:numel(uuv)
+                disp(sprintf('class ''%s'' object ''%s%s'' = \n',...
+                    class(uuv),inputname(1),string_dim(uuv,i)));
+                disp(sprintf('    descriptor: ''%s'''  ,uuv(i).descriptor));
+                disp(sprintf('         lower: %g'      ,uuv(i).lower));
+                disp(sprintf('         upper: %g\n'    ,uuv(i).upper));
+            end
+
+        end
+
+        function [desc]  =prop_desc(uuv,dstr)
+            desc=cell(1,numel(uuv));
+            for i=1:numel(uuv)
+                if ~isempty(uuv(i).descriptor)
+                    desc(i)=cellstr(uuv(i).descriptor);
+                elseif ~isempty(inputname(1))
+                    desc(i)=cellstr([inputname(1) string_dim(uuv,i)]);
+                elseif exist('dstr','var')
+                    desc(i)=cellstr([dstr         string_dim(uuv,i)]);
+                else
+                    desc(i)=cellstr(['uuv'        string_dim(uuv,i)]);
+                end
+            end
+            desc=allempty(desc);
+        end
+        function [initpt]=prop_initpt(uuv)
+            initpt=[];
+        end
+        function [lower] =prop_lower(uuv)
+            lower=zeros(1,numel(uuv));
+            for i=1:numel(uuv)
+                lower(i)=uuv(i).lower;
+            end
+            lower=allequal(lower,-Inf);
+        end
+        function [upper] =prop_upper(uuv)
+            upper=zeros(1,numel(uuv));
+            for i=1:numel(uuv)
+                upper(i)=uuv(i).upper;
+            end
+            upper=allequal(upper, Inf);
+        end
+        function [mean]  =prop_mean(uuv)
+            mean=[];
+        end
+        function [stddev]=prop_stddev(uuv)
+            stddev=[];
+        end
+        function [initst]=prop_initst(uuv)
+            initst=[];
+        end
+        function [stype] =prop_stype(uuv)
+            stype={};
+        end
+        function [scale] =prop_scale(uuv)
+            scale=[];
+        end
+    end
+    
+    methods (Static)
+        function []=dakota_write(fidi,dvar)
+
+%  collect only the variables of the appropriate class
+
+            uuv=struc_class(dvar,'uniform_uncertain');
+
+%  write variables
+
+            vlist_write(fidi,'uniform_uncertain','uuv',uuv);
+        end
+    end
+end
Index: /issm/trunk/src/m/classes/vector_write.m
===================================================================
--- /issm/trunk/src/m/classes/vector_write.m	(revision 3094)
+++ /issm/trunk/src/m/classes/vector_write.m	(revision 3094)
@@ -0,0 +1,52 @@
+
+%%  function to write a vector on multiple lines
+
+function []=vector_write(fidi,sbeg,vec,nmax,cmax)
+
+if ~exist('nmax','var') || isempty(nmax)
+    nmax=Inf;
+end
+if ~exist('cmax','var') || isempty(cmax)
+    cmax=Inf;
+end
+
+%  set up first iteration
+
+svec =[];
+nitem=nmax;
+lsvec=cmax;
+
+%  transpose vector from column-wise to row-wise
+
+vec=vec';
+
+%  assemble each line, flushing when necessary
+
+for i=1:numel(vec)
+    if isnumeric(vec(i))
+        sitem=sprintf('%g'    ,vec(i));
+    else
+        sitem=sprintf('''%s''',char(vec(i)));
+    end
+    nitem=nitem+1;
+    lsvec=lsvec+1+length(sitem);
+    
+    if (nitem <= nmax) && (lsvec <= cmax)
+        svec=[svec ' ' sitem];
+    else
+        if ~isempty(svec)
+            fprintf(fidi,'%s\n',svec);
+        end
+        svec=[sbeg sitem];
+        nitem=1;
+        lsvec=length(svec);
+    end
+end
+
+%  flush buffer at end, if necessary
+
+if ~isempty(svec)
+    fprintf(fidi,'%s\n',svec);
+end
+
+end
Index: /issm/trunk/src/m/classes/vlist_write.m
===================================================================
--- /issm/trunk/src/m/classes/vlist_write.m	(revision 3094)
+++ /issm/trunk/src/m/classes/vlist_write.m	(revision 3094)
@@ -0,0 +1,80 @@
+%
+%  function to write variable list
+%
+function []=vlist_write(fidi,cstring,cstring2,dvar)
+
+if isempty(dvar)
+    return;
+end
+
+%  put variables into lists for writing
+
+nvar=0;
+pinitpt=[];
+plower =[];
+pupper =[];
+pmean  =[];
+pstddev=[];
+pinitst=[];
+pstype =[];
+pscale =[];
+pdesc  =[];
+
+fnames=fieldnames(dvar);
+for i=1:numel(fnames)
+    nvar=nvar+numel(dvar.(fnames{i}));
+    pinitpt=[pinitpt prop_initpt(dvar.(fnames{i}))];
+    plower =[plower  prop_lower(dvar.(fnames{i})) ];
+    pupper =[pupper  prop_upper(dvar.(fnames{i})) ];
+    pmean  =[pmean   prop_mean(dvar.(fnames{i}))  ];
+    pstddev=[pstddev prop_stddev(dvar.(fnames{i}))];
+    pinitst=[pinitst prop_initst(dvar.(fnames{i}))];
+    pstype =[pstype  prop_stype(dvar.(fnames{i})) ];
+    pscale =[pscale  prop_scale(dvar.(fnames{i})) ];
+    pdesc  =[pdesc   prop_desc(dvar.(fnames{i}),fnames{i})];
+end
+
+%  write variables
+%  (using Dakota 4.1 syntax for backward compatability)
+
+disp(sprintf('  Writing %d %s variables.',nvar,cstring));
+
+fprintf(fidi,'\t%s = %d\n',cstring,nvar);
+if ~isempty(pinitpt)
+    fprintf(fidi,'\t  %s_initial_point =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pinitpt,6,76);
+end
+if ~isempty(plower)
+    fprintf(fidi,'\t  %s_lower_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),plower ,6,76);
+end
+if ~isempty(pupper)
+    fprintf(fidi,'\t  %s_upper_bounds =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pupper ,6,76);
+end
+if ~isempty(pmean)
+    fprintf(fidi,'\t  %s_means =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pmean  ,6,76);
+end
+if ~isempty(pstddev)
+    fprintf(fidi,'\t  %s_std_deviations =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstddev,6,76);
+end
+if ~isempty(pinitst)
+    fprintf(fidi,'\t  %s_initial_state =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pinitst,6,76);
+end
+if ~isempty(pstype)
+    fprintf(fidi,'\t  %s_scale_types =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pstype ,6,76);
+end
+if ~isempty(pscale)
+    fprintf(fidi,'\t  %s_scales =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pscale ,6,76);
+end
+if ~isempty(pdesc)
+    fprintf(fidi,'\t  %s_descriptors =\n',cstring2);
+    vector_write(fidi,sprintf('\t    '),pdesc  ,6,76);
+end
+
+end
