Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24548)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24549)
@@ -2123,6 +2123,7 @@
 
 	IssmDouble  deepwaterel,upperwaterel,deepwatermelt,upperwatermelt;
-	IssmDouble* base     		= xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* values   		= xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *base         = xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *values       = xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *perturbation = xNew<IssmDouble>(NUM_VERTICES);
 	IssmDouble 	time;
 
@@ -2135,4 +2136,5 @@
 
 	this->GetInputListOnVertices(base,BaseEnum);
+   this->GetInputListOnVertices(perturbation,BasalforcingsPerturbationMeltingRateEnum);
 	for(int i=0;i<NUM_VERTICES;i++){
 		if(base[i]>=upperwaterel){
@@ -2146,8 +2148,11 @@
 			values[i]=deepwatermelt*alpha+(1.-alpha)*upperwatermelt;
 		}
+
+      values[i]+=perturbation[i];
 	}
 
 	this->AddInput2(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
 	xDelete<IssmDouble>(base);
+   xDelete<IssmDouble>(perturbation);
 	xDelete<IssmDouble>(values);
 
@@ -2157,9 +2162,9 @@
 	const int NUM_VERTICES = this->GetNumberOfVertices();
 
-	IssmDouble* deepwatermelt	= xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* deepwaterel     = xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* upperwaterel	= xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* base			= xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* values			= xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *deepwatermelt = xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *deepwaterel   = xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *upperwaterel  = xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *base          = xNew<IssmDouble>(NUM_VERTICES);
+	IssmDouble *values        = xNew<IssmDouble>(NUM_VERTICES);
 
 	this->GetInputListOnVertices(base,BaseEnum);
