Index: /issm/trunk-jpl/src/c/main/esmfbinders.cpp
===================================================================
--- /issm/trunk-jpl/src/c/main/esmfbinders.cpp	(revision 19681)
+++ /issm/trunk-jpl/src/c/main/esmfbinders.cpp	(revision 19682)
@@ -9,4 +9,7 @@
 const int GCMForcingNumTerms = 1;
 const int GCMForcingTerms[GCMForcingNumTerms]= { SMBgcmEnum}; 
+
+const int ISSMOutputNumTerms = 1;
+const int ISSMOutputTerms[ISSMOutputNumTerms]= { SurfaceEnum };
 
 extern "C" {
@@ -96,4 +99,37 @@
 		/*}}}*/
 
+		/*Retrieve ISSM outputs and pass them back to the Gcm : {{{*/
+		for (int f=0;f<ISSMOutputNumTerms;f++){
+
+			int output_type=ISSMOutputTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(output_type){
+					case SurfaceEnum:
+						/*{{{*/
+						{
+
+						IssmDouble surface;
+						
+						/*Recover surface from the ISSM element: */
+						Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+						surface_input->GetInputAverage(&surface);
+			
+						*(issmoutputs+f*numberofelements+i) = surface;
+
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown output type " << output_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
 		/*Before running, setup the time interval: */
 		femmodel->parameters->FindParam(&start_time,TimesteppingStartTimeEnum);
