Index: /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 25018)
+++ /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 25019)
@@ -21,6 +21,8 @@
 	IssmDouble * variable_partition         = NULL;
 	int * variable_partitions_npart         = NULL;
+	int * variable_partitions_nt         = NULL;
 	int          variable_partitions_num;
 	int          npart;
+	int          nt;
 	int variablecount=0;
 
@@ -33,4 +35,5 @@
 	femmodel->parameters->FindParam(&variable_partitions,&variable_partitions_num,NULL,NULL,QmuVariablePartitionsEnum); 
 	femmodel->parameters->FindParam(&variable_partitions_npart,NULL,NULL,QmuVariablePartitionsNpartEnum); 
+	femmodel->parameters->FindParam(&variable_partitions_nt,NULL,NULL,QmuVariablePartitionsNtEnum); 
 	
 	numberofvertices=femmodel->vertices->NumberOfVertices();
@@ -49,4 +52,5 @@
 			variable_partition=variable_partitions[variablecount];
 			npart=variable_partitions_npart[variablecount];
+			nt=variable_partitions_nt[variablecount];
 
 			/*Variable is scaled. Determine root name of variable (ex: scaled_DragCoefficient_1 -> DragCoefficient). Allocate distributed_values and fill the 
@@ -57,6 +61,6 @@
 			*strstr(root,"_")='\0';
 
-			distributed_values=xNew<double>(npart);
-			for(j=0;j<npart;j++){
+			distributed_values=xNew<double>(npart*nt);
+			for(j=0;j<npart*nt;j++){
 				distributed_values[j]=variables[i+j];
 			}
@@ -72,26 +76,60 @@
 			//_printf_("nrows: " << nrows << " numberofvertices: " << numberofvertices << " numberofelements: " << numberofelements << "\n");
 
-			if (nrows==numberofvertices || nrows==(numberofvertices+1)){
-				for(k=0;k<numberofvertices;k++){
-					if (variable_partition[k]==-1)continue;
-					else{
-						for(l=0;l<ncols;l++){
-							*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
+			if(ncols!=nt){
+				/*we are trying to update a col sized transient input by scaling with a matrix of col size nt. This can only work if nt==1, otherwise, error out: */
+				if (nt!=1) _error_("InputUpdateFromDakotax error message: transient input being updated should be the same col size as the number of time step in the qmu variable specificationi");
+			}
+
+			if(nt==1){
+				/*scale all the columns by the same vector:*/
+				if (nrows==numberofvertices || nrows==(numberofvertices+1)){
+					for(k=0;k<numberofvertices;k++){
+						if (variable_partition[k]==-1)continue;
+						else{
+							for(l=0;l<ncols;l++){
+								*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
+							}
 						}
 					}
 				}
+				else if (nrows==numberofelements || nrows==(numberofelements+1)){
+					for(k=0;k<numberofelements;k++){
+						if (variable_partition[k]==-1)continue;
+						else{
+							for(l=0;l<ncols;l++){
+								*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
+							}
+						}
+					}
+
+				}
+				else _error_("partitioning vector should be either elements or vertex sized!");
+
 			}
-			else if (nrows==numberofelements || nrows==(numberofelements+1)){
-				for(k=0;k<numberofelements;k++){
-					if (variable_partition[k]==-1)continue;
-					else{
-						for(l=0;l<ncols;l++){
-							*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]];
+			else{
+				/*scale all the columns by the scalar matrix:*/
+				if (nrows==numberofvertices || nrows==(numberofvertices+1)){
+					for(k=0;k<numberofvertices;k++){
+						if (variable_partition[k]==-1)continue;
+						else{
+							for(l=0;l<ncols;l++){
+								*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]*nt+l];
+							}
 						}
 					}
 				}
+				else if (nrows==numberofelements || nrows==(numberofelements+1)){
+					for(k=0;k<numberofelements;k++){
+						if (variable_partition[k]==-1)continue;
+						else{
+							for(l=0;l<ncols;l++){
+								*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)variable_partition[k]*nt+l];
+							}
+						}
+					}
 
+				}
+				else _error_("partitioning vector should be either elements or vertex sized!");
 			}
-			else _error_("partitioning vector should be either elements or vertex sized!");
 
 			#ifdef _DEBUG_
@@ -118,5 +156,5 @@
 
 			/*increment i to skip the distributed values just collected: */
-			i+=npart-1; //careful, the for loop will add 1.
+			i+=npart*nt-1; //careful, the for loop will add 1.
 			
 			/*Free allocations: */
@@ -143,4 +181,6 @@
 	}
 	xDelete<IssmDouble*>(variable_partitions);
+	xDelete<int>(variable_partitions_npart);
+	xDelete<int>(variable_partitions_nt);
 
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 25018)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 25019)
@@ -78,4 +78,6 @@
 		iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_npart");
 		parameters->AddObject(new IntMatParam(QmuVariablePartitionsNpartEnum,intarray,M,N));
+		xDelete<int>(intarray); iomodel->FetchData(&intarray,&M,&N,"md.qmu.variablepartitions_nt");
+		parameters->AddObject(new IntMatParam(QmuVariablePartitionsNtEnum,intarray,M,N));
 
 		/*free arrays: {{{*/
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 25018)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 25019)
@@ -297,4 +297,5 @@
 syn keyword cConstant QmuVariablePartitionsEnum
 syn keyword cConstant QmuVariablePartitionsNpartEnum
+syn keyword cConstant QmuVariablePartitionsNtEnum
 syn keyword cConstant QmuResponsePartitionsEnum
 syn keyword cConstant QmuResponsePartitionsNpartEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 25018)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 25019)
@@ -291,4 +291,5 @@
 	QmuVariablePartitionsEnum,
 	QmuVariablePartitionsNpartEnum,
+	QmuVariablePartitionsNtEnum,
 	QmuResponsePartitionsEnum,
 	QmuResponsePartitionsNpartEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 25018)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 25019)
@@ -299,4 +299,5 @@
 		case QmuVariablePartitionsEnum : return "QmuVariablePartitions";
 		case QmuVariablePartitionsNpartEnum : return "QmuVariablePartitionsNpart";
+		case QmuVariablePartitionsNtEnum : return "QmuVariablePartitionsNt";
 		case QmuResponsePartitionsEnum : return "QmuResponsePartitions";
 		case QmuResponsePartitionsNpartEnum : return "QmuResponsePartitionsNpart";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 25018)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 25019)
@@ -305,4 +305,5 @@
 	      else if (strcmp(name,"QmuVariablePartitions")==0) return QmuVariablePartitionsEnum;
 	      else if (strcmp(name,"QmuVariablePartitionsNpart")==0) return QmuVariablePartitionsNpartEnum;
+	      else if (strcmp(name,"QmuVariablePartitionsNt")==0) return QmuVariablePartitionsNtEnum;
 	      else if (strcmp(name,"QmuResponsePartitions")==0) return QmuResponsePartitionsEnum;
 	      else if (strcmp(name,"QmuResponsePartitionsNpart")==0) return QmuResponsePartitionsNpartEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
 	      else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
-	      else if (strcmp(name,"SmbK")==0) return SmbKEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
+	      if (strcmp(name,"SmbK")==0) return SmbKEnum;
+	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
 	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
 	      else if (strcmp(name,"SmbRdl")==0) return SmbRdlEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
 	      else if (strcmp(name,"Bed")==0) return BedEnum;
-	      else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
+	      if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
+	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
 	      else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
 	      else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"HydrologyWatercolumnMax")==0) return HydrologyWatercolumnMaxEnum;
 	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
-	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"Ice")==0) return IceEnum;
+	      if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
+	      else if (strcmp(name,"Ice")==0) return IceEnum;
 	      else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
 	      else if (strcmp(name,"Input")==0) return InputEnum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
 	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
-	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
+	      if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
+	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
 	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
 	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
 	      else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
-	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
+	      if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+	      else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
 	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
 	      else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
 	      else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
-	      else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
+	      if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
+	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
 	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
 	      else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
@@ -1120,9 +1121,9 @@
 	      else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum;
 	      else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
-	      else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
+	      if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;
+	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
 	      else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
 	      else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
@@ -1243,9 +1244,9 @@
 	      else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
 	      else if (strcmp(name,"P2")==0) return P2Enum;
-	      else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
+	      if (strcmp(name,"P2bubble")==0) return P2bubbleEnum;
+	      else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum;
 	      else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
 	      else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
@@ -1366,9 +1367,9 @@
 	      else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
 	      else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
-	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
          else stage=12;
    }
    if(stage==12){
-	      if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
+	      if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
+	      else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum;
 	      else if (strcmp(name,"SubelementMigration4")==0) return SubelementMigration4Enum;
 	      else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
Index: /issm/trunk-jpl/src/m/classes/qmu.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu.m	(revision 25018)
+++ /issm/trunk-jpl/src/m/classes/qmu.m	(revision 25019)
@@ -17,4 +17,5 @@
 		variablepartitions          = {};
 		variablepartitions_npart    = [];
+		variablepartitions_nt    = [];
 		responsedescriptors         = {};
 		responsepartitions          = {};
@@ -174,4 +175,5 @@
 			fielddisplay(self,'variablepartitions','');
 			fielddisplay(self,'variablepartitions_npart','');
+			fielddisplay(self,'variablepartitions_nt','');
 			fielddisplay(self,'variabledescriptors','');
 			fielddisplay(self,'responsedescriptors','');
@@ -195,4 +197,5 @@
 			WriteData(fid,prefix,'object',self,'fieldname','variablepartitions','format','MatArray');
 			WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_npart','format','IntMat','mattype',3);
+			WriteData(fid,prefix,'object',self,'fieldname','variablepartitions_nt','format','IntMat','mattype',3);
 			WriteData(fid,prefix,'object',self,'fieldname','responsedescriptors','format','StringArray');
 			WriteData(fid,prefix,'object',self,'fieldname','responsepartitions','format','MatArray');
Index: /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m	(revision 25018)
+++ /issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.m	(revision 25019)
@@ -18,4 +18,5 @@
 		stddev		= NaN;
 		partition	= [];
+		nsteps        = 0;
 	end
 	methods
@@ -35,13 +36,20 @@
 			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']);
+				self.nsteps=getfieldvalue(options,'nsteps',1);
+				npart=qmupart2npart(self.partition);
+				if npart~=size(self.mean,1),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the row size of the mean field should be identifical to the number of partitions']);
 				end
-				if npart~=length(self.stddev),
-					error(['normal_uncertain constructor: for the scaled variable' self.descriptor ' the stddev field is not currently a vector of values for all the partitions described in the partition vector']);
+				if npart~=size(self.stddev,1),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the row size of the stddev field should be identifical to the number of partitions']);
 				end
+				if self.nsteps~=size(self.mean,2),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the mean field should be identifical to the number of time steps']);
+				end
+				if npart~=size(self.stddev,1),
+					error(['normal_uncertain constructor: for the scaled variable ' self.descriptor ' the col size of the stddev field should be identifical to the number of time steps']);
+				end
+
 			end
-
 
 		end %}}}
@@ -54,4 +62,5 @@
 				fielddisplay(self,'partition','partition vector defining where sampling will occur');
 			end
+			fielddisplay(self,'nsteps','number of time steps');
 		end
 		%}}}
@@ -65,9 +74,16 @@
 				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');
+				if size(self.stddev,1)~=partition_npart(self.partition),
+					error('normal_uncertain error message: row size of stddev and partition size should be identical');
 				end
-				if length(self.mean)~=partition_npart(self.partition),
-					error('normal_uncertain error message: mean and partition should be vectors of identical size');
+				if size(self.mean,1)~=partition_npart(self.partition),
+					error('normal_uncertain error message: row size of mean and partition size should be identical');
+				end
+				%we need as steps in stddev and mean as there are time steps: 
+				if size(self.stddev,2)~=self.nsteps,
+					error('normal_uncertain error message: col size of stddev and number of time steps should be identical');
+				end
+				if size(self.mean,2)~=self.nsteps,
+					error('normal_uncertain error message: col size of mean and number of time steps should be identical');
 				end
 
Index: /issm/trunk-jpl/src/m/qmu/preqmu.m
===================================================================
--- /issm/trunk-jpl/src/m/qmu/preqmu.m	(revision 25018)
+++ /issm/trunk-jpl/src/m/qmu/preqmu.m	(revision 25019)
@@ -88,7 +88,8 @@
 
 %build a MatArray of variable partitions: 
+variable_fieldnames=fieldnames(md.qmu.variables(ivar));
 variablepartitions={};
 variablepartitions_npart=[];
-variable_fieldnames=fieldnames(md.qmu.variables(ivar));
+variablepartitions_nt=[];
 for i=1:length(variable_fieldnames),
 	field_name=variable_fieldnames{i};
@@ -97,17 +98,19 @@
 		variablepartitions{end+1}=fieldvariable.partition;
 		variablepartitions_npart(end+1)=qmupart2npart(fieldvariable.partition);
+		variablepartitions_nt(end+1)=fieldvariable.nsteps;
 	else
 		variablepartitions{end+1}=[];
 		variablepartitions_npart(end+1)=0;
+		variablepartitions_nt(end+1)=1;
 	end
 end
 
 %build a MatArray of response partitions: 
+response_fieldnames=fieldnames(md.qmu.responses(ivar));
 responsepartitions={};
 responsepartitions_npart=[];
-response_fieldnames=fieldnames(md.qmu.responses(iresp));
 for i=1:length(response_fieldnames),
 	field_name=response_fieldnames{i};
-	fieldresponse=md.qmu.responses(iresp).(field_name);
+	fieldresponse=md.qmu.responses(ivar).(field_name);
 	if fieldresponse.isscaled();
 		responsepartitions{end+1}=fieldresponse.partition;
@@ -125,4 +128,5 @@
 md.qmu.variablepartitions=variablepartitions;
 md.qmu.variablepartitions_npart=variablepartitions_npart;
+md.qmu.variablepartitions_nt=variablepartitions_nt;
 md.qmu.responsedescriptors=responsedescriptors;
 md.qmu.responsepartitions=responsepartitions;
@@ -132,2 +136,3 @@
 %is a response, we need a profile of points.  For a misfit, we need the observed velocity, etc ...
 md=process_qmu_response_data(md);
+
Index: /issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m
===================================================================
--- /issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 25018)
+++ /issm/trunk-jpl/src/m/qmu/setupdesign/QmuSetupVariables.m	(revision 25019)
@@ -13,4 +13,6 @@
 	%figure out number of partitions: 
 	npart=qmupart2npart(partition);
+	%figure out number of time steps: 
+	nt=variables.nsteps;
 
 	if isa(variables,'uniform_uncertain'),
@@ -28,15 +30,32 @@
 
 	%ok, dealing with semi-discrete distributed variable. Distribute according to how many 
-	%partitions we want
-	for j=1:npart,
-		dvar(end+1)           =variables;
-		dvar(end  ).descriptor=sprintf('%s_%d',variables.descriptor,j);
-		if isa(variables,'uniform_uncertain'),
-			dvar(end  ).lower=variables.lower(j);
-			dvar(end  ).upper=variables.upper(j);
-		elseif isa(variables,'normal_uncertain'),
-			dvar(end  ).stddev=variables.stddev(j);
-			dvar(end  ).mean=variables.mean(j);
+	%partitions we want, and number of time steps: 
+	if nt==1,
+		for j=1:npart,
+			dvar(end+1)           =variables;
+			dvar(end  ).descriptor=sprintf('%s_%d',variables.descriptor,j);
+			if isa(variables,'uniform_uncertain'),
+				dvar(end  ).lower=variables.lower(j);
+				dvar(end  ).upper=variables.upper(j);
+			elseif isa(variables,'normal_uncertain'),
+				dvar(end  ).stddev=variables.stddev(j);
+				dvar(end  ).mean=variables.mean(j);
+			end
 		end
+	else
+		for j=1:npart,
+			for k=1:nt,
+				dvar(end+1)           =variables;
+				dvar(end  ).descriptor=sprintf('%s_%d_%d',variables.descriptor,j,k);
+				if isa(variables,'uniform_uncertain'),
+					dvar(end  ).lower=variables.lower(j,k);
+					dvar(end  ).upper=variables.upper(j,k);
+				elseif isa(variables,'normal_uncertain'),
+					dvar(end  ).stddev=variables.stddev(j,k);
+					dvar(end  ).mean=variables.mean(j,k);
+				end
+			end
+		end
+
 	end
 
