Index: /issm/trunk-jpl/src/jl/core/analyses/masstransportanalysis.jl
===================================================================
--- /issm/trunk-jpl/src/jl/core/analyses/masstransportanalysis.jl	(revision 26735)
+++ /issm/trunk-jpl/src/jl/core/analyses/masstransportanalysis.jl	(revision 26736)
@@ -36,4 +36,5 @@
 	FetchDataToInput(md,inputs,elements,md.geometry.surface,SurfaceEnum)
 	FetchDataToInput(md,inputs,elements,md.geometry.base,BaseEnum)
+	FetchDataToInput(md,inputs,elements,md.geometry.bed,BedEnum)
 	FetchDataToInput(md,inputs,elements,md.basalforcings.groundedice_melting_rate./md.constants.yts,BasalforcingsGroundediceMeltingRateEnum)
 	FetchDataToInput(md,inputs,elements,md.basalforcings.floatingice_melting_rate./md.constants.yts,BasalforcingsFloatingiceMeltingRateEnum)
@@ -238,4 +239,5 @@
 	oldsurface   = Vector{Float64}(undef,3)
 	phi          = Vector{Float64}(undef,3)
+	bed          = Vector{Float64}(undef,3)
 	GetInputListOnVertices!(element, newthickness, ThicknessEnum)
    GetInputListOnVertices!(element, oldthickness, ThicknessOldEnum)
@@ -243,4 +245,5 @@
    GetInputListOnVertices!(element, oldsurface, SurfaceOldEnum)
    GetInputListOnVertices!(element, phi, MaskOceanLevelsetEnum)
+	GetInputListOnVertices!(element, bed, BedEnum)
    sealevel = zeros(3)
 	newsurface = Vector{Float64}(undef,3)
@@ -250,6 +253,6 @@
       if(phi[i]>0.)
          #this is grounded ice: just add thickness to base.
-         newsurface[i] = bed[i]+newthickness[i]; #surface = bed + newthickness
-         newbase[i]    = bed[i];                 #new base at new bed
+         newsurface[i] = bed[i]+newthickness[i] #surface = bed + newthickness
+         newbase[i]    = bed[i]                 #new base at new bed
       else
          #this is an ice shelf: hydrostatic equilibrium
Index: /issm/trunk-jpl/src/jl/core/analyses/transientanalysis.jl
===================================================================
--- /issm/trunk-jpl/src/jl/core/analyses/transientanalysis.jl	(revision 26735)
+++ /issm/trunk-jpl/src/jl/core/analyses/transientanalysis.jl	(revision 26736)
@@ -33,4 +33,5 @@
       if(isstressbalance) Core(StressbalanceAnalysis(), femmodel) end
       if(ismasstransport) Core(MasstransportAnalysis(), femmodel) end
+		MigrateGroundinglinex(femmodel)
 
 		step+=1
Index: /issm/trunk-jpl/src/jl/core/elements.jl
===================================================================
--- /issm/trunk-jpl/src/jl/core/elements.jl	(revision 26735)
+++ /issm/trunk-jpl/src/jl/core/elements.jl	(revision 26736)
@@ -257,4 +257,51 @@
 	return sqrt(2*GetArea(element))
 end#}}}
+function MigrateGroundingLine(element::Tria) #{{{
+
+	h = Vector{Float64}(undef,3)
+	s = Vector{Float64}(undef,3)
+	b = Vector{Float64}(undef,3)
+	r = Vector{Float64}(undef,3)
+	phi = Vector{Float64}(undef,3)
+	sl = zeros(3)
+	GetInputListOnVertices!(element, h, ThicknessEnum)
+	GetInputListOnVertices!(element, s, SurfaceEnum)
+	GetInputListOnVertices!(element, b, BaseEnum)
+	GetInputListOnVertices!(element, r, BedEnum)
+	#GetInputListOnVertices(element, sl, SealevelEnum)
+	GetInputListOnVertices!(element, phi, MaskOceanLevelsetEnum)
+
+
+	rho_water   = FindParam(element, MaterialsRhoSeawaterEnum)
+	rho_ice     = FindParam(element, MaterialsRhoIceEnum)
+	density     = rho_ice/rho_water
+
+	for i in 1:3
+
+		if(phi[i]<=0)
+			#reground if base is below bed
+			if(b[i]<=r[i])
+				b[i] = r[i]
+				s[i] = b[i]+h[i]
+			end
+		else
+			bed_hydro=-density*h[i]+sl[i];
+			if (bed_hydro>r[i])
+				#Unground only if the element is connected to the ice shelf
+				s[i] = (1-density)*h[i]+sl[i]
+				b[i] = -density*h[i]+sl[i]
+			end
+		end
+
+		#recalculate phi
+		phi[i]=h[i]+(r[i]-sl[i])/density
+	end
+
+	#Update inputs
+	AddInput(element,MaskOceanLevelsetEnum,phi,P1Enum)
+	AddInput(element,SurfaceEnum,s,P1Enum)
+	AddInput(element,BaseEnum,b,P1Enum)
+
+end#}}}
 
 #Finite Element stuff
Index: /issm/trunk-jpl/src/jl/core/modules.jl
===================================================================
--- /issm/trunk-jpl/src/jl/core/modules.jl	(revision 26735)
+++ /issm/trunk-jpl/src/jl/core/modules.jl	(revision 26736)
@@ -313,2 +313,9 @@
 	end
 end# }}}
+function MigrateGroundinglinex(femmodel::FemModel)# {{{
+
+	for i=1:length(femmodel.elements)
+		MigrateGroundingLine(femmodel.elements[i])
+	end
+
+end# }}}
