Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15019)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15020)
@@ -2078,4 +2078,5 @@
 				name==SedimentHeadOldEnum ||
 				name==SedimentHeadEnum ||
+				name==WaterTransferEnum ||
 				name==BasisIntegralEnum ||
 				name==QmuVxEnum ||
@@ -6150,5 +6151,5 @@
 	IssmDouble xyz_list[NUMVERTICES][3];
 	IssmDouble dt,scalar,water_head;
-	IssmDouble water_load;
+	IssmDouble water_load,transfer;
 	IssmDouble sediment_storing;
 	IssmDouble basis[numdof];
@@ -6163,4 +6164,5 @@
 	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
 	Input* water_input=inputs->GetInput(BasalforcingsMeltingRateEnum);  _assert_(water_input);
+	Input* transfer_input=inputs->GetInput(WaterTransferEnum);  _assert_(transfer_input);
 	Input* old_wh_input=NULL; 
 
@@ -6181,5 +6183,6 @@
 		/*Loading term*/
 		water_input->GetInputValue(&water_load,gauss);
-		scalar = Jdet*gauss->weight*water_load;
+		transfer_input->GetInputValue(&transfer,gauss);
+		scalar = Jdet*gauss->weight*(water_load-transfer);
 		if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt;
 		for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
@@ -6207,5 +6210,5 @@
 	IssmDouble xyz_list[NUMVERTICES][3];
 	IssmDouble dt,scalar,water_head;
-	IssmDouble residual_load;
+	IssmDouble residual_load,transfer;
 	IssmDouble epl_storing;
 	IssmDouble basis[numdof];
@@ -6220,4 +6223,5 @@
 	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
 	Input* residual_input=inputs->GetInput(SedimentHeadResidualEnum);  _assert_(residual_input);
+	Input* transfer_input=inputs->GetInput(WaterTransferEnum);  _assert_(transfer_input);
 	Input* old_wh_input=NULL; 
 
@@ -6237,5 +6241,6 @@
 		/*Loading term*/
 		residual_input->GetInputValue(&residual_load,gauss);
-		scalar = Jdet*gauss->weight*residual_load;
+		transfer_input->GetInputValue(&transfer,gauss);
+		scalar = Jdet*gauss->weight*(residual_load+transfer);
 		if(reCast<bool,IssmDouble>(dt)) scalar = scalar*dt;
 		for(int i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];
@@ -6350,11 +6355,12 @@
 		for(int i=0;i<NUMVERTICES;i++){
 			this->GetHydrologyDCInefficientHmax(&h_max,nodes[i]);
-			if(values[i]>h_max)
-				residual[i]=kappa*(values[i]-h_max)/(dt*intbasis[i]);
+			if(values[i]>h_max){
+				residual[i]=kappa*(values[i]-h_max)/intbasis[i];
+				if(reCast<bool,IssmDouble>(dt))residual[i]=residual[i]/dt;
+			}
 			else
 				residual[i]=0.0;
 		}
-	}	
-
+	}
 	/*Add input to the element: */
 
@@ -6516,4 +6522,5 @@
 			}
 		}
+		break;
 	default:
 		_error_("no case higher than 1 for the Transfer method");
Index: /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 15019)
+++ /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 15020)
@@ -703,5 +703,4 @@
 	element->GetInputValue(&h,node,SedimentHeadEnum);
 	element->GetHydrologyDCInefficientHmax(&h_max,node);
-
 	if (h>h_max)
 	 new_active=1;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp	(revision 15019)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp	(revision 15020)
@@ -13,7 +13,9 @@
 	int         hydrology_model;
 	int         sedimentlimit_flag;
+	int         transfer_flag;
 	bool        isefficientlayer;
 	IssmDouble  sedimentlimit;
 	IssmDouble  penalty_factor;
+	IssmDouble  leakagefactor;
 
 	/*Get parameters: */
@@ -31,4 +33,5 @@
 	iomodel->FetchData(&isefficientlayer,HydrologydcIsefficientlayerEnum);
 	iomodel->FetchData(&sedimentlimit_flag,HydrologydcSedimentlimitFlagEnum);
+	iomodel->FetchData(&transfer_flag,HydrologydcTransferFlagEnum);
 	iomodel->FetchData(&penalty_factor,HydrologydcPenaltyFactorEnum);
 
@@ -38,8 +41,14 @@
 	}
 
+	if(transfer_flag==1){
+		iomodel->FetchData(&leakagefactor,HydrologydcLeakageFactorEnum);
+		parameters->AddObject(new DoubleParam(HydrologydcLeakageFactorEnum,leakagefactor));
+	}
+
 	parameters->AddObject(new DoubleParam(HydrologydcPenaltyFactorEnum,penalty_factor));
 	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
 	parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer));
 	parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag));
+	parameters->AddObject(new IntParam(HydrologydcTransferFlagEnum,transfer_flag));
 
 	/*Assign output pointer: */
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 15019)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 15020)
@@ -45,4 +45,5 @@
 		femmodel->UpdateConstraintsx();
 		femmodel->parameters->SetParam(HydrologySedimentEnum,HydrologyLayerEnum);
+		femmodel->HydrologyTransferx();
 		for(;;){
 
