Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 22708)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 22709)
@@ -82,5 +82,4 @@
 		IssmDouble *oceangridx;
 		IssmDouble *oceangridy;
-		IssmDouble *oceanmelt;
 		IssmDouble *icebase;
 		IssmDouble coupling_time,oceantime;
@@ -95,6 +94,4 @@
 		if(my_rank==0){
 			ISSM_MPI_Send(&coupling_time,1,ISSM_MPI_DOUBLE,0,10001000,tomitgcmcomm);
-			ISSM_MPI_Send(&time,1,ISSM_MPI_DOUBLE,0,10001001,tomitgcmcomm);
-			ISSM_MPI_Recv(&oceantime,1,ISSM_MPI_DOUBLE,0,10001002,tomitgcmcomm,&status);
 			ISSM_MPI_Recv(&oceangridnxsize,1,ISSM_MPI_INT,0,10001003,tomitgcmcomm,&status);
 			ISSM_MPI_Recv(&oceangridnysize,1,ISSM_MPI_INT,0,10001004,tomitgcmcomm,&status);
@@ -105,4 +102,7 @@
 			oceangridy = xNew<IssmDouble>(oceangridnxsize*oceangridnysize);
 			ISSM_MPI_Recv(oceangridy,oceangridnxsize*oceangridnysize,ISSM_MPI_DOUBLE,0,10001006,tomitgcmcomm,&status);
+
+			ISSM_MPI_Send(&time,1,ISSM_MPI_DOUBLE,0,10001001,tomitgcmcomm);
+			ISSM_MPI_Recv(&oceantime,1,ISSM_MPI_DOUBLE,0,10001002,tomitgcmcomm,&status);
 			icebase = xNew<IssmDouble>(oceangridnxsize*oceangridnysize);
 			for(int i=0;i<oceangridnxsize;i++){
@@ -112,10 +112,7 @@
 			}
 			ISSM_MPI_Send(icebase,oceangridnxsize*oceangridnysize,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
-			oceanmelt = xNew<IssmDouble>(oceangridnxsize*oceangridnysize);
-			ISSM_MPI_Recv(oceanmelt,oceangridnxsize*oceangridnysize,ISSM_MPI_DOUBLE,0,10001007,tomitgcmcomm,&status);
 			xDelete<IssmDouble>(icebase);
 			xDelete<IssmDouble>(oceangridx);
 			xDelete<IssmDouble>(oceangridy);
-			xDelete<IssmDouble>(oceanmelt);
 		}
 	}
@@ -166,7 +163,8 @@
 
 		if(isoceancoupling){ {{{
-			if(VerboseSolution()) _printf0_("   ocean coupling: sending ice base\n");
+			if(VerboseSolution()) _printf0_("   ocean coupling: exchanging information\n");
 			int my_rank;
 			int oceangridnxsize,oceangridnysize;
+			IssmDouble *oceanmelt;
 			IssmDouble *icebase;
 			IssmDouble oceantime;
@@ -184,4 +182,6 @@
 				femmodel->parameters->FindParam(&oceangridnxsize,OceanGridNxEnum);
 				femmodel->parameters->FindParam(&oceangridnysize,OceanGridNyEnum);
+				oceanmelt = xNew<IssmDouble>(oceangridnxsize*oceangridnysize);
+				ISSM_MPI_Recv(oceanmelt,oceangridnxsize*oceangridnysize,ISSM_MPI_DOUBLE,0,10001007,tomitgcmcomm,&status);
 				for(int i=0;i<oceangridnxsize;i++){
 					for(int j=0;j<oceangridnysize;j++){
@@ -190,4 +190,5 @@
 				}
 				ISSM_MPI_Send(icebase,oceangridnxsize*oceangridnysize,ISSM_MPI_DOUBLE,0,10001008,tomitgcmcomm);
+				xDelete<IssmDouble>(oceanmelt);
 				xDelete<IssmDouble>(icebase);
 			}
@@ -272,26 +273,4 @@
 		}
 
-		if(isoceancoupling){ {{{
-			if(VerboseSolution()) _printf0_("   ocean coupling: receiving melt\n");
-			int my_rank;
-			int oceangridnxsize,oceangridnysize;
-			IssmDouble *oceanmelt;
-			ISSM_MPI_Comm tomitgcmcomm;
-			ISSM_MPI_Status status;
-
-			my_rank=IssmComm::GetRank();
-			GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(ToMITgcmCommEnum));
-			if(!parcom)_error_("TransferForcing error message: could not find ToMITgcmCommEnum communicator");
-			tomitgcmcomm=parcom->GetParameterValue();
-			if(my_rank==0){
-				femmodel->parameters->FindParam(&oceangridnxsize,OceanGridNxEnum);
-				femmodel->parameters->FindParam(&oceangridnysize,OceanGridNyEnum);
-				oceanmelt = xNew<IssmDouble>(oceangridnxsize*oceangridnysize);
-				ISSM_MPI_Recv(oceanmelt,oceangridnxsize*oceangridnysize,ISSM_MPI_DOUBLE,0,10001007,tomitgcmcomm,&status);
-				xDelete<IssmDouble>(oceanmelt);
-			}
-		}
-		}}}
-
 		if(recording_frequency && (step%recording_frequency==0)){
 			if(VerboseSolution()) _printf0_("   checkpointing model \n");
