Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24156)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24157)
@@ -5946,4 +5946,10 @@
 			break;
 
+		case ElementEnum:
+			IssmDouble value;
+			/*Get value for the element: */
+			value=vector[this->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+			this->inputs->AddInput(new TriaInput(name,&value,P0Enum));
+			break;
 		default:
 			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
Index: /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 24156)
+++ /issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 24157)
@@ -16,8 +16,10 @@
 
 	int     numberofvertices;
+	int     numberofelements;
 	int     nrows;
 	int     ncols;
 	int     npart;
 	double *qmu_part  = NULL;
+	int     qmu_npart;
 
 	double *distributed_values = NULL;
@@ -28,6 +30,7 @@
 	/*retrieve parameters: */
 	femmodel->parameters->FindParam(&npart,QmuNumberofpartitionsEnum);
-	femmodel->parameters->FindParam(&qmu_part,&dummy,QmuPartitionEnum);
+	femmodel->parameters->FindParam(&qmu_part,&qmu_npart,QmuPartitionEnum);
 	numberofvertices=femmodel->vertices->NumberOfVertices();
+	numberofelements=femmodel->elements->NumberOfElements();
 
 	/*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and 
@@ -56,13 +59,27 @@
 			femmodel->parameters->FindParamInDataset(&parameter,&nrows,&ncols,QmuVariableDescriptorsEnum,StringToEnumx(root));
 
-			/*We've got the parameter, we need to update it using qmu_part (a partitioning vector), 
-			 * and the distributed_values. Two cases: we either have a nrows=numberofvertices, in 
-			 * which case our parameter is a vector, or nrows=numberofvertices+1, in which case, 
-			 * our parameter is a transient vector. Deal with both cases accordingly: */
-			for(k=0;k<numberofvertices;k++){
-				for(l=0;l<ncols;l++){
-					*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]];
+
+			/*We've got the parameter, we need to update it using qmu_part and the distributed_values. 
+			 * Several cases: we either have a nrows=numberofvertices or nrows=numberofelements, and 
+			 * in addition, it can be either a static or transient (nrows+1) vector. 
+			 * Deal with both cases accordingly: */
+			//_printf_("nrows: " << nrows << " numberofvertices: " << numberofvertices << " qmu_npart: " << qmu_npart << "\n");
+
+			if (qmu_npart==numberofvertices){
+				for(k=0;k<numberofvertices;k++){
+					for(l=0;l<ncols;l++){
+						*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]];
+					}
 				}
 			}
+			else if (qmu_npart==numberofelements){
+				for(k=0;k<numberofelements;k++){
+					for(l=0;l<ncols;l++){
+						*(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]];
+					}
+				}
+
+			}
+			else _error_("partitioning vector should be either elements or vertex sized!");
 
 			#ifdef _DEBUG_
@@ -83,5 +100,8 @@
 
 			/*Update inputs using the parameter matrix: */
-			InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), VertexEnum);
+			if(qmu_npart==numberofvertices)
+				InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), VertexEnum);
+			else
+				InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), ElementEnum);
 
 			/*increment i to skip the distributed values just collected: */
Index: /issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 24156)
+++ /issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp	(revision 24157)
@@ -11,9 +11,10 @@
 
 	int i;
-	int numberofvertices;
+	int numberofvertices,numberofelements;
 
 	numberofvertices=femmodel->vertices->NumberOfVertices();
+	numberofelements=femmodel->elements->NumberOfElements();
 
-	if((ncols==1) && (nrows==numberofvertices)) InputUpdateFromVectorDakotax(femmodel,matrix,name,type);
+	if((ncols==1) && (nrows==numberofvertices | nrows==numberofelements)) InputUpdateFromVectorDakotax(femmodel,matrix,name,type);
 	else{
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 24156)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 24157)
@@ -15,4 +15,5 @@
 	int         *part                   = NULL;
 	double      *dpart                  = NULL;
+	int          npart;
 	char       **responsedescriptors    = NULL;
 	int          numresponsedescriptors;
@@ -68,7 +69,7 @@
 		/*partition vertices in iomodel->qmu_npart parts, unless a partition is already present: */
 		parameters->AddObject(iomodel->CopyConstantObject("md.qmu.numberofpartitions",QmuNumberofpartitionsEnum));
-		iomodel->FetchData(&dpart,NULL,NULL,"md.qmu.partition");
+		iomodel->FetchData(&dpart,&npart,NULL,"md.qmu.partition");
 		if(!dpart) _error_("md.qmu.partition is empty");
-		parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart,iomodel->numberofvertices));
+		parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart,npart));
 
 		/*Deal with data needed because of qmu variables*/
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 24156)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 24157)
@@ -163,4 +163,9 @@
 		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
 	}
+	else if(strcmp(string_in,"SealevelriseDeltathickness")==0){
+		const char* field = "md.slr.deltathickness";
+		input_enum        = SealevelriseDeltathicknessEnum;
+		fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
+	}
 	else{
 		_error_("Field \""<<string_in<<"\" not supported yet");
