Index: /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 25272)
+++ /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 25273)
@@ -135,124 +135,6 @@
 		xDelete<int>(pN);
 		/*}}}*/
-		/*now do the same with the dsl.sea_surface_height_change_above_geoid field:{{{ */
-		iomodel->FetchData(&pstr,&pM,&pN,&nummodels,"md.dsl.sea_surface_height_change_above_geoid");
-
-		for (int i=0;i<nummodels;i++){
-			M=pM[i];
-			N=pN[i];
-			str=pstr[i];
-		
-
-			//recover time vector: 
-			times=xNew<IssmDouble>(N);
-			for(int t=0;t<N;t++) times[t] = str[(M-1)*N+t];
-			
-			TransientInput2* transientinput=inputs2->SetDatasetTransientInput(DslSeaSurfaceHeightChangeAboveGeoidEnum,i, times,N);
-	
-			for(int j=0;j<elements->Size();j++){
-
-				/*Get the right transient input*/
-				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
-
-				/*Get values and lid list*/
-				const int   numvertices = element->GetNumberOfVertices();
-				int        *vertexlids = xNew<int>(numvertices);
-				int        *vertexsids = xNew<int>(numvertices);
-
-
-				/*Recover vertices ids needed to initialize inputs*/
-				_assert_(iomodel->elements);
-				for(int k=0;k<numvertices;k++){
-					vertexsids[k] =reCast<int>(iomodel->elements[numvertices*element->Sid()+k]-1); //ids for vertices are in the elements array from Matlab
-					vertexlids[k]=iomodel->my_vertices_lids[vertexsids[k]];
-				}
-
-				IssmDouble* values=xNew<IssmDouble>(numvertices);
-
-				for(int t=0;t<N;t++){
-					for (int k=0;k<numvertices;k++)values[k]=str[N*vertexsids[k]+t];
-
-					switch(element->ObjectEnum()){
-						case TriaEnum:  transientinput->AddTriaTimeInput( t,numvertices,vertexlids,values,P1Enum); break;
-						case PentaEnum: transientinput->AddPentaTimeInput(t,numvertices,vertexlids,values,P1Enum); break;
-						default: _error_("Not implemented yet");
-					}
-				}
-				xDelete<IssmDouble>(values);
-				xDelete<int>(vertexlids);
-				xDelete<int>(vertexsids);
-			}
-			
-			xDelete<IssmDouble>(times);
-		}
-		
-		/*Delete data:*/
-		for(int i=0;i<nummodels;i++){
-			IssmDouble* str=pstr[i];
-			xDelete<IssmDouble>(str);
-		}
-		xDelete<IssmDouble*>(pstr);
-		xDelete<int>(pM);
-		xDelete<int>(pN);
-		/*}}}*/
-		/*now do the same with the dsl.sea_water_pressure_change_at_sea_floor field:{{{ */
-		iomodel->FetchData(&pstr,&pM,&pN,&nummodels,"md.dsl.sea_water_pressure_change_at_sea_floor");
-
-		for (int i=0;i<nummodels;i++){
-			M=pM[i];
-			N=pN[i];
-			str=pstr[i];
-
-			//recover time vector: 
-			times=xNew<IssmDouble>(N);
-			for(int t=0;t<N;t++) times[t] = str[(M-1)*N+t];
-
-			TransientInput2* transientinput=inputs2->SetDatasetTransientInput(DslSeaWaterPressureChangeAtSeaFloor,i, times,N);
-	
-			for(int j=0;j<elements->Size();j++){
-
-				/*Get the right transient input*/
-				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
-
-				/*Get values and lid list*/
-				const int   numvertices = element->GetNumberOfVertices();
-				int        *vertexlids = xNew<int>(numvertices);
-				int        *vertexsids = xNew<int>(numvertices);
-				
-				
-				/*Recover vertices ids needed to initialize inputs*/
-				_assert_(iomodel->elements);
-				for(int k=0;k<numvertices;k++){
-					vertexsids[k] =reCast<int>(iomodel->elements[numvertices*element->Sid()+k]-1); //ids for vertices are in the elements array from Matlab
-					vertexlids[k]=iomodel->my_vertices_lids[vertexsids[k]];
-				}
-				
-				IssmDouble* values=xNew<IssmDouble>(numvertices);
-
-				for(int t=0;t<N;t++){
-					for (int k=0;k<numvertices;k++)values[k]=str[N*vertexsids[k]+t];
-
-					switch(element->ObjectEnum()){
-						case TriaEnum:  transientinput->AddTriaTimeInput( t,numvertices,vertexlids,values,P1Enum); break;
-						case PentaEnum: transientinput->AddPentaTimeInput(t,numvertices,vertexlids,values,P1Enum); break;
-						default: _error_("Not implemented yet");
-					}
-				}
-				xDelete<IssmDouble>(values);
-				xDelete<int>(vertexlids);
-				xDelete<int>(vertexsids);
-			}
-			xDelete<IssmDouble>(times);
-		}
-		
-		/*Delete data:*/
-		for(int i=0;i<nummodels;i++){
-			IssmDouble* str=pstr[i];
-			xDelete<IssmDouble>(str);
-		}
-		xDelete<IssmDouble*>(pstr);
-		xDelete<int>(pM);
-		xDelete<int>(pN);
-		/*}}}*/
+		iomodel->FetchDataToDatasetInput(inputs2,elements,"md.dsl.sea_surface_height_change_above_geoid",DslSeaSurfaceHeightChangeAboveGeoidEnum);
+		iomodel->FetchDataToDatasetInput(inputs2,elements,"md.dsl.sea_water_pressure_change_at_sea_floor",DslSeaWaterPressureChangeAtSeaFloor);
 
 	} /*}}}*/
@@ -329,10 +211,12 @@
 	parameters->AddObject(iomodel->CopyConstantObject("md.dsl.compute_fingerprints",DslComputeFingerprintsEnum));
 	if(dslmodel==2){
-		int modelid; 
+		IssmDouble modelid; 
 		int nummodels;
-
-		parameters->AddObject(iomodel->CopyConstantObject("md.dsl.modelid",DslModelidEnum));
+		
+		/*create double param, not int param, because Dakota will be updating it as 
+		 * a double potentially: */
+		iomodel->FetchData(&modelid,"md.dsl.modelid");
+		parameters->AddObject(new DoubleParam(DslModelEnum,modelid));
 		parameters->AddObject(iomodel->CopyConstantObject("md.dsl.nummodels",DslNummodelsEnum));
-		iomodel->FetchData(&modelid,"md.dsl.modelid");
 		iomodel->FetchData(&nummodels,"md.dsl.nummodels");
 
