Index: /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m	(revision 24818)
+++ /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m	(revision 24819)
@@ -1,32 +1,15 @@
+%NORMAL_UNCERTAIN class definition
 %
-%  definition for the normal_uncertain class.
-%
-%  [nuv]=normal_uncertain(varargin)
-%
-%  where the required varargin are:
-%    descriptor    (char, description, '')
-%    mean          (double, mean, NaN)
-%    stddev        (double, standard deviation, NaN)
-%  and the optional varargin and defaults are:
-%    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."
-%
+%   Usage:
+%      nuv=normal_uncertain('descriptor',descriptor,'mean',mean,'stddev',stddev,'partition',partition);
+%      where nuv is the normal_uncertain object returned by the constructor, mean and stddev are self 
+%      explanatory.  partition is the partition vector for distributed variables. Can be a partition 
+%      vector over elements or vertices.
+% 
+%   Example:
+%      md.qmu.variables.rheology=normal_uncertain('descriptor','RheologyBBar','mean',1,'stddev',.05);
+%      md.qmu.variables.rheology=normal_uncertain('descriptor','scaled_RheologyBBar','mean',1,'stddev',.05,'partition',vpartition);
+% 
+
 classdef normal_uncertain
     properties
@@ -34,93 +17,19 @@
         mean      = NaN;
         stddev    = NaN;
-        lower     =-Inf;
-        upper     = Inf;
+		partition = [];
     end
+    methods
+        function self=normal_uncertain(varargin) %constructor {{{
 
-    methods
-        function [nuv]=normal_uncertain(varargin)
+			%recover options: 
+			options = pairoptions(varargin{:});
 
-            switch nargin
+			%initialize fields: 
+			self.descriptor=getfieldvalue(options,'descriptor');
+			self.mean=getfieldvalue(options,'mean');
+			self.stddev=getfieldvalue(options,'stddev');
 
-%  create a default object
-
-                case 0
-
-%  copy the object
-
-                case 1
-                    if isa(varargin{1},'normal_uncertain')
-                        nuv=varargin{1};
-                    else
-                        error('Object ''%s'' is a ''%s'' class object, not ''%s''.',...
-                            inputname(1),class(varargin{1}),'normal_uncertain');
-                    end
-
-%  not enough arguments
-
-                case 2
-                    error('Construction of ''%s'' class object requires at least %d inputs.',...
-                        'normal_uncertain',3)
-
-%  create the object from the input
-
-                otherwise
-                    asizec=num2cell(array_size(varargin{1:min(nargin,5)}));
-                    nuv(asizec{:})=normal_uncertain;
-                    clear asizec
-
-                    if ischar(varargin{1})
-                        varargin{1}=cellstr(varargin{1});
-                    end
-                    for i=1:numel(nuv)
-                        if (numel(varargin{1}) > 1)
-                            nuv(i).descriptor=varargin{1}{i};
-                        else
-                            if numel(nuv)==1,
-								nuv(i).descriptor=char(varargin{1});
-							else
-								nuv(i).descriptor=[char(varargin{1}) num2str(i)];
-							end
-                        end
-                        if (numel(varargin{2}) > 1)
-                            nuv(i).mean      =varargin{2}(i);
-                        else
-                            nuv(i).mean      =varargin{2};
-                        end
-                        if (numel(varargin{3}) > 1)
-                            nuv(i).stddev    =varargin{3}(i);
-                        else
-                            nuv(i).stddev    =varargin{3};
-                        end
-                    end
-
-                    if (nargin >= 4)
-                        for i=1:numel(nuv)
-                            if (numel(varargin{4}) > 1)
-                                nuv(i).lower     =varargin{4}(i);
-                            else
-                                nuv(i).lower     =varargin{4};
-                            end
-                        end
-                        if (nargin >= 5)
-                            for i=1:numel(nuv)
-                                if (numel(varargin{5}) > 1)
-                                    nuv(i).upper     =varargin{5}(i);
-                                else
-                                    nuv(i).upper     =varargin{5};
-                                end
-                            end
-                            if (nargin > 5)
-                                warning('normal_uncertain:extra_arg',...
-                                    'Extra arguments for object of class ''%s''.',...
-                                    class(nuv));
-                            end
-                        end
-                    end
-            end
-
-        end
-
-        function []=disp(nuv)
+        end %}}}
+        function []=disp(nuv) % {{{
 
 %  display the object
@@ -133,11 +42,9 @@
                 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)
+        end 
+		%}}}
+        function [desc]  =prop_desc(nuv,dstr) % {{{
             desc=cell(1,numel(nuv));
             for i=1:numel(nuv)
@@ -153,43 +60,19 @@
             end
             desc=allempty(desc);
-        end
-        function [initpt]=prop_initpt(nuv)
-            initpt=[];
-        end
-        function [lower] =prop_lower(nuv)
-            lower=zeros(1,numel(nuv));
-            for i=1:numel(nuv)
-                lower(i)=nuv(i).lower;
-            end
-            lower=allequal(lower,-Inf);
-        end
-        function [upper] =prop_upper(nuv)
-            upper=zeros(1,numel(nuv));
-            for i=1:numel(nuv)
-                upper(i)=nuv(i).upper;
-            end
-            upper=allequal(upper, Inf);
-        end
-        function [mean]  =prop_mean(nuv)
+        end %}}}
+        function [mean]  =prop_mean(nuv) % {{{
             mean=zeros(1,numel(nuv));
             for i=1:numel(nuv)
                 mean(i)=nuv(i).mean;
             end
-        end
-        function [stddev]=prop_stddev(nuv)
+        end % }}}
+        function [stddev]=prop_stddev(nuv) % {{{
             stddev=zeros(1,numel(nuv));
             for i=1:numel(nuv)
                 stddev(i)=nuv(i).stddev;
             end
-        end
-        function [initst]=prop_initst(nuv)
-            initst=[];
-        end
-        function [stype] =prop_stype(nuv)
-            stype={};
-        end
-        function [scale] =prop_scale(nuv)
-            scale=[];
-        end
+        end % }}}
+
+	%virtual functions needed by qmu processing algorithms:
 		function [abscissas] =prop_abscissas(hbu) % {{{
             abscissas=[]; 
@@ -201,18 +84,30 @@
 			pairs_per_variable=[];
         end % }}}
-
+        function [initpt]=prop_initpt(nuv) % {{{
+            initpt=[];
+        end % }}}
+        function [lower]  =prop_lower(nuv) % {{{
+			lower=[];
+        end % }}}
+        function [upper]  =prop_upper(nuv) % {{{
+			upper=[];
+        end % }}}
+        function [initst]=prop_initst(nuv) % {{{
+            initst=[];
+        end % }}}
+        function [stype] =prop_stype(nuv) % {{{
+            stype={};
+        end % }}}
+        function [scale] =prop_scale(nuv) % {{{
+            scale=[];
+        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
-
+        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
 end
Index: /issm/trunk-jpl/test/NightlyRun/test2085.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test2085.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test2085.m	(revision 24819)
@@ -36,5 +36,5 @@
 %loading love numbers
 field_names = {'LoveH_loading_elastic','LoveK_loading_elastic','LoveL_loading_elastic','LoveKernels_degree1','LoveKernels_degree2'};
-field_tolerances={1e-10,1e-10,1e-10,1e-10,1e-10}; 
+field_tolerances={1e-10,1e-10,1e-10,4e-10,1e-10}; 
 field_values={...
 	(md.results.LoveSolution.LoveHr(:,1)),...
Index: /issm/trunk-jpl/test/NightlyRun/test218.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test218.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test218.m	(revision 24819)
@@ -60,5 +60,5 @@
 
 %variables
-md.qmu.variables.rheology_B=normal_uncertain('scaled_MaterialsRheologyB',1,.05);
+md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB','mean',1,'stddev',.05);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test234.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 24819)
@@ -27,5 +27,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test235.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test235.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test235.m	(revision 24819)
@@ -27,5 +27,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test244.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test244.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test244.m	(revision 24819)
@@ -51,5 +51,6 @@
 
 %variables
-md.qmu.variables.surface_mass_balanceC=normal_uncertain('scaled_SmbC',1,0.5);
+md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC','mean',1,'stddev',.5);
+
 Tmin=273;
 telms=min(md.smb.Ta(1:end-1,:),[],2);
Index: /issm/trunk-jpl/test/NightlyRun/test250.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test250.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test250.m	(revision 24819)
@@ -27,5 +27,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test251.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test251.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test251.m	(revision 24819)
@@ -27,5 +27,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test412.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test412.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test412.m	(revision 24819)
@@ -19,6 +19,7 @@
 
 %variables
-md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
-md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
+
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test413.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test413.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test413.m	(revision 24819)
@@ -17,6 +17,7 @@
 
 %variables
-md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
-md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
+
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test414.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test414.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test414.m	(revision 24819)
@@ -25,5 +25,5 @@
 
 %variables
-md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test417.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test417.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test417.m	(revision 24819)
@@ -19,5 +19,5 @@
 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
-md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
 
 md.qmu.responses.MaxVel=response_function('MaxVel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
Index: /issm/trunk-jpl/test/NightlyRun/test420.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test420.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test420.m	(revision 24819)
@@ -18,5 +18,5 @@
 
 %variables
-md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test440.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test440.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test440.m	(revision 24819)
@@ -18,5 +18,5 @@
 
 %variables
-md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',1,'stddev',.01);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test444.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test444.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test444.m	(revision 24819)
@@ -49,5 +49,5 @@
 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
-md.qmu.variables.drag_coefficient=normal_uncertain('scaled_BasalforcingsFloatingiceMeltingRate',1,0.1);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate','mean',1,'stddev',.1);
 
 md.qmu.responses.IceMass1=response_function('Outputdefinition5',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
Index: /issm/trunk-jpl/test/NightlyRun/test445.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test445.m	(revision 24818)
+++ /issm/trunk-jpl/test/NightlyRun/test445.m	(revision 24819)
@@ -19,6 +19,6 @@
 
 %variables
-md.qmu.variables.neff=normal_uncertain('scaled_FrictionEffectivePressure',1,.05);
-md.qmu.variables.geoflux=normal_uncertain('scaled_BasalforcingsGeothermalflux',1,.05);
+md.qmu.variables.neff=normal_uncertain('descriptor','scaled_FrictionEffectivePressure','mean',1,'stddev',.05);
+md.qmu.variables.neff=normal_uncertain('descriptor','scaled_BasalforcingsGeothermalflux','mean',1,'stddev',.05);
 
 %responses
