Index: /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m	(revision 24835)
+++ /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m	(revision 24836)
@@ -29,5 +29,19 @@
 			self.mean=getfieldvalue(options,'mean');
 			self.stddev=getfieldvalue(options,'stddev');
-			self.partition=getfieldvalue(options,'partition',[]); %default not used.
+			
+			%if the variable is scaled,  a partition vector should have been supplied, and 
+			%that partition vector should have as many partitions as the mean and stddev 
+			%vectors:
+			if self.isscaled(),
+				self.partition=getfieldvalue(options,'partition');
+				npart=partition_npart(self.partition);
+				if npart~=length(self.mean),
+					error(['normal_uncertain constructor: for the scaled variable' self.descriptor ' the mean field is not currently a vector of values for all the partitions described in the partition vector']);
+				end
+				if npart~=length(self.stddev),
+					error(['normal_uncertain constructor: for the scaled variable' self.described ' the stddev field is not currently a vector of values for all the partitions described in the partition vector']);
+				end
+			end
+
 
 		end %}}}
@@ -48,7 +62,18 @@
 		md = checkfield(md,'field',self.mean,'fieldname','normal_uncertain.mean','NaN',1,'Inf',1,'>=',0);
 		md = checkfield(md,'field',self.stddev,'fieldname','normal_uncertain.stddev','NaN',1,'Inf',1,'>=',0,'numel',length(self.mean));
-		if ~isempty(self.partition),
+		if self.isscaled(),
+			if isempty(self.partition),
+				error('normal_uncertain is a scaled variable, but it''s missing a partition vector');
+			end
+			%better have a partition vector that has as many partitions as stddev's size: 
+			if  length(self.stddev)~=partition_npart(self.partition),
+				error('normal_uncertain error message: stddev and partition should be vectors of identical size');
+			end
+			if  length(self.mean)~=partition_npart(self.partition),
+				error('normal_uncertain error message: mean and partition should be vectors of identical size');
+			end
+
 			md = checkfield(md,'field',self.partition,'fieldname','normal_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]);
-			if size(self.partition,1)>1,
+			if size(self.partition,2)>1,
 				error('normal_uncertain error message: partition should be a column vector');
 			end
@@ -63,5 +88,4 @@
 				error('normal_uncertain error message: partition vector''s values cannot go over the number of vertices or elements');
 			end
-
 		end
 	end % }}}
@@ -123,5 +147,13 @@
 		scale=[];
 	end % }}}
-    end
+	%new methods: 
+	function scaled =isscaled(self) % {{{
+		if strncmp(self.descriptor,'scaled_',7),
+			scaled=1;
+		else
+			scaled=0;
+		end
+	end % }}}
+	end
     methods (Static)
         function []=dakota_write(fidi,dvar) % {{{
Index: /issm/trunk-jpl/src/m/classes/qmu/partition_npart.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu/partition_npart.m	(revision 24836)
+++ /issm/trunk-jpl/src/m/classes/qmu/partition_npart.m	(revision 24836)
@@ -0,0 +1,13 @@
+function npart=partition_npart(vector)
+
+	%vector could be on vertices or eleemnts, and will have a small amount of possible integer 
+	%values: 
+	uvec=unique(vector);
+	uvec(uvec==-1)=[];
+
+	%ok, so now we should have a vector from 0 to npart-1:
+	npart=max(uvec)+1;
+	if npart~=length(uvec),
+		error('partition vector should be in the range 0 to numberofpartitions, with -1 values for vertices or elements not belonging to any partition');
+	end
+
Index: /issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.m	(revision 24835)
+++ /issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.m	(revision 24836)
@@ -29,5 +29,18 @@
 			self.upper=getfieldvalue(options,'upper');
 			self.lower=getfieldvalue(options,'lower');
-			self.partition=getfieldvalue(options,'partition',[]); %default not used.
+
+			%if the variable is scaled,  a partition vector should have been supplied, and 
+			%that partition vector should have as many partitions as the lower and upper 
+			%vectors:
+			if self.isscaled(),
+				self.partition=getfieldvalue(options,'partition'); 
+				npart=partition_npart(self.partition);
+				if npart~=length(self.upper),
+					error(['uniform_uncertain constructor: for the scaled variable' self.descriptor ' the upper field is not currently a vector of values for all the partitions described in the partition vector']);
+				end
+				if npart~=length(self.lower),
+					error(['uniform_uncertain constructor: for the scaled variable' self.described ' the lower field is not currently a vector of values for all the partitions described in the partition vector']);
+				end
+			end
 
 		end %}}}
@@ -45,24 +58,34 @@
 		function md=checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'field',self.upper,'fieldname','uniform_uncertain.upper','NaN',1,'Inf',1);
-			md = checkfield(md,'field',self.lower,'fieldname','uniform_uncertain.lower','NaN',1,'Inf',1);
-			if ~isempty(self.partition),
-				md = checkfield(md,'field',self.partition,'fieldname','uniform_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]);
-				if size(self.partition,1)>1,
-					error('uniform_uncertain error message: partition should be a column vector');
-				end
-				partcheck=unique(self.partition); 
-				partmin=min(partcheck); 
-				partmax=max(partcheck);
-				if partmax<-1,
-					error('uniform_uncertain error message: partition vector''s min value should be -1 (for no partition), or start at 0');
-				end
-				nmax=max(md.mesh.numberofelements,md.mesh.numberofvertices);
-				if partmax>nmax,
-					error('uniform_uncertain error message: partition vector''s values cannot go over the number of vertices or elements');
-				end
+		md = checkfield(md,'field',self.upper,'fieldname','uniform_uncertain.upper','NaN',1,'Inf',1,'>',self.lower,'numel',length(self.lower));
+		md = checkfield(md,'field',self.lower,'fieldname','uniform_uncertain.lower','NaN',1,'Inf',1,'<',self.upper,'numel',length(self.upper));
+		if self.isscaled(),
+			if isempty(self.partition),
+				error('normal_uncertain is a scaled variable, but it''s missing a partition vector');
+			end
+			%better have a partition vector that has as many partitions as stddev's size: 
+			if  length(self.upper)~=partition_npart(self.partition),
+				error('uniform_uncertain error message: upper and partition should be vectors of identical size');
+			end
+			if  length(self.lower)~=partition_npart(self.partition),
+				error('uniform_uncertain error message: lower and partition should be vectors of identical size');
+			end
 
+			md = checkfield(md,'field',self.partition,'fieldname','normal_uncertain.partition','NaN',1,'Inf',1,'>=',-1,'numel',[md.mesh.numberofvertices,md.mesh.numberofelements]);
+			if size(self.partition,2)>1,
+				error('uniform_uncertain error message: partition should be a column vector');
 			end
-		end % }}}
+			partcheck=unique(self.partition); 
+			partmin=min(partcheck); 
+			partmax=max(partcheck);
+			if partmax<-1,
+				error('uniform_uncertain error message: partition vector''s min value should be -1 (for no partition), or start at 0');
+			end
+			nmax=max(md.mesh.numberofelements,md.mesh.numberofvertices);
+			if partmax>nmax,
+				error('uniform_uncertain error message: partition vector''s values cannot go over the number of vertices or elements');
+			end
+		end
+	end % }}}
 	%virtual functions needed by qmu processing algorithms:
 	%implemented:
@@ -82,5 +105,5 @@
 			desc=allempty(desc);
 		end %}}}
-		function [lower] =prop_lower(uuv) %{{{
+		function [lower] =prop_lower(uuv) % {{{
 			lower=zeros(1,numel(uuv));
 			for i=1:numel(uuv)
@@ -89,5 +112,5 @@
 			lower=allequal(lower,-Inf);
 		end %}}}
-		function [upper] =prop_upper(uuv) %{{{
+		function [upper] =prop_upper(uuv) % {{{
 			upper=zeros(1,numel(uuv));
 			for i=1:numel(uuv)
@@ -121,7 +144,15 @@
 				counts=[]; 
 				end % }}}
-				function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{
-				pairs_per_variable=[];
-				end % }}}
+	function [pairs_per_variable] =prop_pairs_per_variable(hbu) % {{{
+		pairs_per_variable=[];
+	end % }}}
+	%new methods: 
+	function scaled =isscaled(self) % {{{
+		if strncmp(self.descriptor,'scaled_',7),
+			scaled=1;
+		else
+			scaled=0;
+		end
+	end % }}}
     end
 	methods (Static)
Index: /issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m
===================================================================
--- /issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 24835)
+++ /issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 24836)
@@ -38,4 +38,8 @@
 				dvar(end  ).stddev=variables.stddev(j);
 			end
+			if length(variables.mean)>1,
+				dvar(end  ).mean=variables.mean(j);
+			end
+
 		end
 	end
Index: /issm/trunk-jpl/test/NightlyRun/test218.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test218.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test218.m	(revision 24836)
@@ -60,5 +60,8 @@
 
 %variables
-md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB','mean',1,'stddev',.05);
+md.qmu.variables.rheology_B=normal_uncertain('descriptor','scaled_MaterialsRheologyB',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',.05*ones(md.mesh.numberofvertices,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test234.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 24836)
@@ -27,5 +27,8 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.1*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test235.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test235.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test235.m	(revision 24836)
@@ -27,5 +27,9 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',100*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
+	);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test244.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test244.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test244.m	(revision 24836)
@@ -51,5 +51,8 @@
 
 %variables
-md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC','mean',1,'stddev',.5);
+md.qmu.variables.surface_mass_balanceC=normal_uncertain('descriptor','scaled_SmbC',...
+	'mean',1*ones(md.mesh.numberofelements,1),...
+	'stddev',.5*ones(md.mesh.numberofelements,1),...
+	'partition',md.qmu.epartition);
 
 Tmin=273;
@@ -64,7 +67,8 @@
 end
 mint_on_partition(isnan(mint_on_partition)) = 10^-10;
-md.qmu.variables.surface_mass_balanceTa=uniform_uncertain('descriptor','scaled_SmbTa','upper',1,'lower',0.05);
-md.qmu.variables.surface_mass_balanceTa.lower=0.95;
-md.qmu.variables.surface_mass_balanceTa.upper=max(min(max(1.05,mint_on_partition),0.9999),0.0001);
+md.qmu.variables.surface_mass_balanceTa=uniform_uncertain('descriptor','scaled_SmbTa',...
+	'lower',.95*ones(md.mesh.numberofelements,1),...
+	'upper',max(min(max(1.05,mint_on_partition),0.9999),0.0001),...
+	'partition',md.qmu.epartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test250.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test250.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test250.m	(revision 24836)
@@ -27,5 +27,8 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',.1);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test251.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test251.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test251.m	(revision 24836)
@@ -27,5 +27,8 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance','mean',1,'stddev',100);
+md.qmu.variables.surface_mass_balance=normal_uncertain('descriptor','scaled_SmbMassBalance',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',100*ones(md.mesh.numberofvertices,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test412.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test412.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test412.m	(revision 24836)
@@ -19,7 +19,9 @@
 
 %variables
-md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',md.materials.rho_ice,'stddev',.01);
-md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
-
+md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce', 'mean',md.materials.rho_ice,'stddev',.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(md.mesh.numberofvertices,1),...
+	'stddev',.01*ones(md.mesh.numberofvertices,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test413.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test413.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test413.m	(revision 24836)
@@ -18,6 +18,8 @@
 %variables
 md.qmu.variables.rho_ice=normal_uncertain('descriptor','MaterialsRhoIce','mean',md.materials.rho_ice,'stddev',.01);
-md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
-
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.01*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test414.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test414.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test414.m	(revision 24836)
@@ -25,5 +25,8 @@
 
 %variables
-md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.01*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test417.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test417.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test417.m	(revision 24836)
@@ -19,5 +19,14 @@
 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
-md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient','mean',1,'stddev',.01);
+%partitioning
+md.qmu.numberofpartitions=20;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.vpartition=md.qmu.vpartition-1;
+md.qmu.isdakota=1;
+
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_FrictionCoefficient',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.01*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 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]);
@@ -58,9 +67,4 @@
 
 
-%partitioning
-md.qmu.numberofpartitions=20;
-md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
-md.qmu.vpartition=md.qmu.vpartition-1;
-md.qmu.isdakota=1;
 
 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
Index: /issm/trunk-jpl/test/NightlyRun/test444.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test444.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test444.m	(revision 24836)
@@ -49,5 +49,14 @@
 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
-md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate','mean',1,'stddev',.1);
+%partitioning
+md.qmu.numberofpartitions=10;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.vpartition=md.qmu.vpartition-1;
+md.qmu.isdakota=1;
+
+md.qmu.variables.drag_coefficient=normal_uncertain('descriptor','scaled_BasalforcingsFloatingiceMeltingRate',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.1*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 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]);
@@ -83,9 +92,4 @@
 end
 
-%partitioning
-md.qmu.numberofpartitions=10;
-md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
-md.qmu.vpartition=md.qmu.vpartition-1;
-md.qmu.isdakota=1;
 
 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
Index: /issm/trunk-jpl/test/NightlyRun/test445.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test445.m	(revision 24835)
+++ /issm/trunk-jpl/test/NightlyRun/test445.m	(revision 24836)
@@ -18,7 +18,19 @@
 version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
+%partitioning
+md.qmu.numberofpartitions=10;
+md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
+md.qmu.vpartition=md.qmu.vpartition-1;
+md.qmu.isdakota=1;
+
 %variables
-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);
+md.qmu.variables.neff=normal_uncertain('descriptor','scaled_FrictionEffectivePressure',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.05*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
+md.qmu.variables.neff=normal_uncertain('descriptor','scaled_BasalforcingsGeothermalflux',...
+	'mean',ones(md.qmu.numberofpartitions,1),...
+	'stddev',.05*ones(md.qmu.numberofpartitions,1),...
+	'partition',md.qmu.vpartition);
 
 %responses
@@ -56,9 +68,4 @@
 end
 
-%partitioning
-md.qmu.numberofpartitions=10;
-md=partitioner(md,'package','chaco','npart',md.qmu.numberofpartitions,'weighting','on');
-md.qmu.vpartition=md.qmu.vpartition-1;
-md.qmu.isdakota=1;
 
 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
