Index: /issm/trunk-jpl/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.cpp	(revision 27813)
+++ /issm/trunk-jpl/src/c/modules/OceanExchangeDatax/OceanExchangeDatax.cpp	(revision 27814)
@@ -28,5 +28,5 @@
 	IssmDouble *oceangridx;
 	IssmDouble *oceangridy;
-	IssmDouble *icebase_oceangrid = NULL;
+	IssmDouble *icethickness_oceangrid = NULL;
 	IssmDouble *icemask_oceangrid = NULL;
 	IssmDouble* x_ice             = NULL;
@@ -34,5 +34,5 @@
 	IssmDouble* lat_ice           = NULL;
 	IssmDouble* lon_ice           = NULL;
-	IssmDouble* icebase           = NULL;
+	IssmDouble* icethickness      = NULL;
 	IssmDouble* icemask           = NULL;
 	IssmDouble* melt_mesh         = NULL;
@@ -81,10 +81,10 @@
 	}
 
-	/*Interpolate ice base and mask onto ocean grid*/
+	/*Interpolate ice thickness and mask onto ocean grid*/
 	femmodel->GetMesh(femmodel->vertices,femmodel->elements,&x_ice,&y_ice,&index_ice);
 	BamgTriangulatex(&index_ocean,&nels_ocean,oceangridx,oceangridy,ngrids_ocean);
 	femmodel->vertices->XYList(&lon_ice,&lat_ice);
 	//femmodel->vertices->LatLonList(&lat_ice,&lon_ice);
-	GetVectorFromInputsx(&icebase,femmodel,BaseEnum,VertexSIdEnum);
+	GetVectorFromInputsx(&icethickness,femmodel,ThicknessEnum,VertexSIdEnum);
 	Options* options = new Options();
 	GenericOption<double> *odouble = new GenericOption<double>();
@@ -96,8 +96,8 @@
 	odouble->size[1]=1;
 	options->AddOption(odouble);
-	InterpFromMeshToMesh2dx(&icebase_oceangrid,index_ice,lon_ice,lat_ice,ngrids_ice,nels_ice,
-					icebase,ngrids_ice,1,oceangridx,oceangridy,ngrids_ocean,options);
+	InterpFromMeshToMesh2dx(&icethickness_oceangrid,index_ice,lon_ice,lat_ice,ngrids_ice,nels_ice,
+					icethickness,ngrids_ice,1,oceangridx,oceangridy,ngrids_ocean,options);
 	delete options;
-	xDelete<IssmDouble>(icebase);
+	xDelete<IssmDouble>(icethickness);
 
 	GetVectorFromInputsx(&icemask,femmodel,MaskIceLevelsetEnum,VertexSIdEnum);
@@ -117,14 +117,15 @@
 
 	/*Put +9999 for places where there is no ice!*/
-	for(int i=0;i<ngrids_ocean;i++) if(icemask_oceangrid[i]>0.) icebase_oceangrid[i]=+9999.;
+	femmodel->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
+	for(int i=0;i<ngrids_ocean;i++) icethickness_oceangrid[i]=icethickness_oceangrid[i]*rho_ice; //ocean needs ice mass in kg/m^2
+	for(int i=0;i<ngrids_ocean;i++) if(icemask_oceangrid[i]>0.) icethickness_oceangrid[i]=+9999.;
 	xDelete<IssmDouble>(icemask_oceangrid);
 
-	if(init_stage==true){ //just send icebase
+	if(init_stage==true){ //just send icethickness
 		if(my_rank==0){
-			ISSM_MPI_Send(icebase_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
+			ISSM_MPI_Send(icethickness_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
 		}
 	}
 	else{ //send and receive exchanged data
-		femmodel->parameters->FindParam(&rho_ice,MaterialsRhoIceEnum);
 		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
 		if(my_rank==0){
@@ -134,5 +135,5 @@
 			oceanmelt = xNew<IssmDouble>(ngrids_ocean);
 			ISSM_MPI_Recv(oceanmelt,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001007,tomitgcmcomm,&status);
-			ISSM_MPI_Send(icebase_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
+			ISSM_MPI_Send(icethickness_oceangrid,ngrids_ocean,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
 		}
 		ISSM_MPI_Bcast(&oceantime,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
@@ -156,5 +157,5 @@
 	xDelete<IssmDouble>(x_ice);
 	xDelete<IssmDouble>(y_ice);
-	xDelete<IssmDouble>(icebase_oceangrid);
+	xDelete<IssmDouble>(icethickness_oceangrid);
 	xDelete<IssmDouble>(oceangridx);
 	xDelete<IssmDouble>(oceangridy);
