Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmAbsVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmAbsVec.h	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmAbsVec.h	(revision 19977)
@@ -42,4 +42,5 @@
 		virtual void AYPX(IssmAbsVec* X, doubletype a)=0;
 		virtual doubletype* ToMPISerial(void)=0;
+		virtual void Shift(doubletype shift)=0;
 		virtual void Copy(IssmAbsVec* to)=0;
 		virtual doubletype Norm(NormMode mode)=0;
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiVec.h	(revision 19977)
@@ -394,4 +394,8 @@
 			return buffer;
 
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			for(int i=0;i<this->m;i++)this->vector[i]+=shift;
 		}
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h	(revision 19977)
@@ -199,4 +199,10 @@
 		}
 		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+
+			for(int i=0;i<this->M;i++)this->vector[i]+=shift;
+
+		}
+		/*}}}*/
 		void Copy(IssmAbsVec<doubletype>* toin){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmVec.h	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmVec.h	(revision 19977)
@@ -180,4 +180,8 @@
 		}
 		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			vector->Shift(shift);
+		}
+		/*}}}*/
 		void Copy(IssmVec* to){/*{{{*/
 			vector->Copy(to->vector);
Index: /issm/trunk-jpl/src/c/toolkits/objects/Vector.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/objects/Vector.h	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/objects/Vector.h	(revision 19977)
@@ -281,4 +281,14 @@
 		}
 		/*}}}*/
+		void Shift(doubletype shift){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Shift(shift);
+				#endif
+			}
+			else this->ivector->Shift(shift);
+		}
+		/*}}}*/
 		void Copy(Vector* to){_assert_(this);/*{{{*/
 
Index: /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscVec.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 19977)
@@ -163,4 +163,10 @@
 }
 /*}}}*/
+void PetscVec::Shift(IssmDouble shift){/*{{{*/
+
+	if(this->vector) VecShift(this->vector,shift);
+
+}
+/*}}}*/
 void PetscVec::Copy(PetscVec* to){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscVec.h	(revision 19976)
+++ /issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscVec.h	(revision 19977)
@@ -50,4 +50,5 @@
 		void        AYPX(PetscVec* X, IssmDouble a);
 		IssmDouble* ToMPISerial(void);
+		void        Shift(IssmDouble shift);
 		void        Copy(PetscVec* to);
 		IssmDouble  Norm(NormMode norm_type);
